Обнаружение состояния программы установки Windows Media
[Функция, связанная с этой страницей, Медиаплеер Windows SDK, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо пакета SDK для Медиаплеер Windows. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Следующий код можно использовать с пакетами распространения Медиаплеер Windows. Состояние установки хранится в записи реестра InstallResult в следующем подразделе:
HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup
Запись реестра InstallResultимеет следующую форму.
Имя | Тип | Значение |
---|---|---|
InstallResult | REG_DWORD | HrESULT, указывающий, успешно ли выполнена установка Медиаплеер Windows и требуется ли перезагрузка. |
Ниже приведен пример кода C++, который можно включить в вызывающее приложение установки. Этот код присвоит fSuccess
переменным и fRebootNeeded
значение true или false на основе значения HRESULT, записанного программой установки Медиаплеер Windows в пакете распространения компонента.
#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;
}
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по