Freigeben über


Erkennen des Setupstatus

Wenn die ausführbare Datei für die Neuverteilung auf einem Computer ausgeführt wird, zeichnet sie ihre Installation status in der Registrierung als HRESULT-Wert auf. Die installations status wird im Registrierungseintrag InstallResult unter dem folgenden Unterschlüssel gespeichert:

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup

Der Registrierungseintrag InstallResult weist das folgende Formular auf.

Name Typ Wert
InstallResult REG_DWORD Ein HRESULT, das angibt, ob Windows Medienwiedergabe Installation erfolgreich war und ob ein Neustart erforderlich ist.

 

Der folgende Code legt die Variablen fSucess und fRebootNeeded aufTrue oder False fest, basierend auf dem HRESULT-Wert , der vom Windows Media-Setup im Komponentenumverteilungspaket geschrieben wurde.

#include <windows.h>
#include <stdio.h>

// If NS_S_REBOOT_REQUIRED is undefined, use 0xD2AF9.
#ifndef NS_S_REBOOT_REQUIRED
#define NS_S_REBOOT_REQUIRED       0xd2af9
#endif
  
int main( void )
{
    HKEY hKey = NULL;
    BOOL fSuccess = FALSE;
    BOOL fRebootNeeded = FALSE;

    LONG lResult = RegOpenKeyEx( 
        HKEY_CURRENT_USER, 
        TEXT("Software\\Microsoft\\MediaPlayer\\Setup"), 
        0, 
        KEY_QUERY_VALUE, 
        &hKey 
        );

    if ( lResult == ERROR_SUCCESS )
    {
        DWORD dwRegType = 0;   // Registry value type.
        DWORD dwValue = 0;     // Registry value.
        DWORD cbValue = sizeof( dwValue );  // Size of the value in bytes.

        lResult = RegQueryValueEx( 
            hKey, 
            TEXT("InstallResult"), 
            NULL, 
            &dwRegType, 
            (LPBYTE)&dwValue, 
            &cbValue
            );

        if( lResult == ERROR_SUCCESS )
        {
            if (dwRegType == REG_DWORD)
            {
                fSuccess = SUCCEEDED( dwValue );
                fRebootNeeded = ( NS_S_REBOOT_REQUIRED == dwValue );
            }
        }

        RegCloseKey( hKey );
    }

    if( fSuccess )
    {
        printf( "Setup succeeded." );
    }
    else
    {
        printf( "Setup failed." );
    }

    if( fRebootNeeded )
    {
        printf( "A reboot IS required.\n" );
    }
    else
    {
        printf( "A reboot IS NOT required.\n" );
    }
 
    return 0;
}

Softwareumverteilung