[Windows Media Format 11 SDK 이 페이지와 연결된 기능은 레거시 기능입니다. 새로운 원본 판독기 및 싱크 작성기 로 대체되었습니다. 원본 판독기 및 싱크 기록기 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 원본 판독기 및 싱크 기록기 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
재배포 실행 파일이 컴퓨터에서 실행되면 레지스트리의 설치 상태를 HRESULT 값으로 기록합니다. 설치 상태는 다음 하위 키 아래의 InstallResult 레지스트리 항목에 저장됩니다.
HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup
InstallResult 레지스트리 항목은 다음과 같은 형식입니다.
| 이름 | 유형 | 값 |
|---|---|---|
| 설치 결과 | REG_DWORD | Windows Media Player 설치가 성공했는지 여부와 다시 시작해야 하는지 여부를 나타내는 HRESULT. |
다음 코드는 구성 요소 재배포 패키지에서 Windows Media 설치 프로그램에 의해 기록된 HRESULT 값에 따라 fSuccess 및 fRebootNeeded 변수를 True 또는 False로 적절히 설정합니다.
#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;
}
관련 항목