Rilevamento dello stato di installazione per l'installazione di Windows Media

[La funzionalità associata a questa pagina, Lettore multimediale Windows SDK, è una funzionalità legacy. È stata sostituita da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer anziché Lettore multimediale Windows SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il codice seguente può essere usato con i pacchetti di ridistribuzione Lettore multimediale Windows. Lo stato di installazione viene archiviato nella voce del Registro di sistema InstallResult nella sottochiave seguente:

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup

La voce del Registro di sistema InstallResultcontiene il modulo seguente.

Nome Type valore
InstallResult REG_DWORD HRESULT che indica se Lettore multimediale Windows'installazione è riuscita e se è necessario un riavvio.

 

Di seguito è riportato un esempio di codice C++ che potrebbe essere incorporato in un'applicazione di configurazione chiamante. Questo codice imposta le fSuccess variabili e fRebootNeeded su true o false, in base al valore HRESULT scritto da Lettore multimediale Windows Setup nel pacchetto di ridistribuzione dei componenti.

#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;
}

Ridistribuizione del software Lettore multimediale Windows