Detectando o status de instalação da instalação do Windows Media

[O recurso associado a esta página, Reprodutor Multimídia do Windows SDK, é um recurso herdado. Foi substituído pelo MediaPlayer. O MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer em vez de Reprodutor Multimídia do Windows SDK, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O código a seguir pode ser usado com os pacotes de redistribuição Reprodutor Multimídia do Windows. A status de instalação é armazenada na entrada do registro InstallResult na seguinte subchave:

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup

A entrada do Registro InstallResulttem o seguinte formulário.

Nome Type Valor
InstallResult REG_DWORD Um HRESULT que indica se Reprodutor Multimídia do Windows instalação foi bem-sucedida e se uma reinicialização é necessária.

 

Aqui está um exemplo de código C++ que pode ser incorporado a um aplicativo de configuração de chamada. Esse código definirá as fSuccess variáveis e fRebootNeeded como true ou false, conforme apropriado, com base no valor HRESULT gravado por Reprodutor Multimídia do Windows Instalação no pacote de redistribuição de componentes.

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

Redistribuindo Reprodutor Multimídia do Windows Software