Aracılığıyla paylaş


Kurulum Durumunu Algılama

[Windows Media Format 11 SDK bu sayfayla ilişkilendirilmiş özellik eski bir özelliktir. Kaynak Okuyucu ve Havuz Yazıcısıtarafından değiştirildi. Kaynak Okuyucu ve Havuz Yazıcısı Windows 10 ve Windows 11 için iyileştirilmiştir. Microsoft, yeni kodun mümkün olduğunda Windows Media Format 11 SDKyerine Kaynak Okuyucu ve Havuz Yazıcı kullanmasını kesinlikle önerir. Microsoft, mümkünse yeni API'leri kullanmak için eski API'leri kullanan mevcut kodun yeniden yazılmasını önerir.]

Yeniden dağıtım yürütülebilir dosyası bir bilgisayarda çalıştırıldığında, yükleme durumunu HRESULT değeri olarak kayıt defterinde kaydeder. Yükleme durumu, aşağıdaki alt anahtar altındaki InstallResult kayıt defteri girdisinde depolanır:

HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup

InstallResult kayıt defteri girdisi aşağıdaki forma sahiptir.

Ad Tür Değer
KurulumSonucu REG_DWORD Windows Media Player yüklemenin başarılı olup olmadığını ve yeniden başlatma gerekip gerekmediğini gösteren HRESULT.

 

Aşağıdaki kod, fSuccess ve fRebootNeeded değişkenlerini, bileşen yeniden dağıtım paketindeki Windows Media kurulumu tarafından yazılan HRESULT değerine göre uygun bir şekilde True veya Falseolarak ayarlar.

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

Yazılım Yeniden Dağıtım