Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей возможностью.] Он был заменён на средство чтения источника и средство записи приемника. средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде чтение исходного кода и запись приемника вместо SDK формата Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Когда исполняемый файл распространения выполняется на компьютере, он записывает его состояние установки в реестр в качестве значения HRESULT. Состояние установки хранится в записи реестра InstallResult в следующем подразделе:
HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Setup
Запись реестра InstallResult имеет следующую форму.
| Имя | Тип | Ценность |
|---|---|---|
| InstallResult | REG_DWORD | HRESULT, указывающий, выполнена ли установка проигрывателя Windows Media и требуется ли перезагрузка. |
В следующем коде переменные fSucess и fRebootNeeded будут установлены в значения True или False, в зависимости от значения HRESULT, определённого программой установки Windows Media в пакете распространения компонентов.
#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;
}
Связанные разделы