Erkennen des Setupstatus für Windows Medieneinrichtung
Der folgende Code kann mit der -Windows Media Player-Paketen verwendet werden. Der Installationsstatus wird im Registrierungseintrag InstallResult unter dem folgenden Unterschlüssel gespeichert:
HKEY _ CURRENT _ USER \ Software \ Microsoft \ MediaPlayer \ Setup
Der Registrierungseintrag InstallResult hat das folgende Formular.
| Name | Typ | Wert |
|---|---|---|
| InstallResult | REG _ DWORD | Ein HRESULT, das angibt, Windows Media Player erfolgreich installiert wurde und ob ein Neustart erforderlich ist. |
Hier ist ein C++-Beispielcode, der in eine aufrufende Setupanwendung integriert werden kann. Dieser Code setzt die Variablen und je nach Fall auf true oder false, basierend auf dem fSuccess fRebootNeeded HRESULT-Wert, der von Windows Media Player Setup im Komponentenverteilungspaket 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;
if( ERROR_SUCCESS == RegOpenKeyExA(
HKEY_CURRENT_USER,
"Software\\Microsoft\\MediaPlayer\\Setup",
0, KEY_QUERY_VALUE, &hKey ))
{
char szResult[64];
DWORD dwResult = sizeof( szResult );
if( ERROR_SUCCESS == RegQueryValueExA(
hKey, "InstallResult", NULL, NULL,
(LPBYTE)szResult, &dwResult ) )
{
sscanf_s( szResult, "%x", &dwResult );
fSuccess = SUCCEEDED( dwResult );
fRebootNeeded = ( NS_S_REBOOT_REQUIRED == dwResult );
}
RegCloseKey( hKey );
}
if( fSuccess )
{
printf( "Setup Succeeded..." );
if( fRebootNeeded )
printf( "A restart IS required...\n" );
else
printf( "A restart IS NOT required...\n" );
}
else
{
printf( "Setup Failed..." );
if( fRebootNeeded )
printf( "A restart IS required...\n" );
else
printf( "A restart IS NOT required...\n" );
}
return 0;
}