Установка переменной NVRAM с помощью WinAPI - PullRequest
1 голос

Я пытаюсь настроить собственную переменную NVRAM (nv + rt + bs), используя WinAPI (SetFirmwareEnvironmentVariable).Это не с моей переменной и успешно завершено с BootOrder.Что я делаю не так?Можно ли настроить мою собственную переменную с помощью WinAPI?

Я пытаюсь настроить свою переменную, используя этот код

void setMyNVRAM()
{
    // here I setup SE_SYSTEM_ENVIRONMENT_NAME privilege

    uint16_t value = 0x5aa5;

    if (!SetFirmwareEnvironmentVariable(L"MY_VARIABLE",
       L"{12345678-1234-1234-1234-123456789012}", &value, sizeof (value)))
    {
        std::cout << "error while settin up MY_VARIABLE. Error code: " 
                  << GetLastError() << std::endl;
    }
    else
    {
        std::cout << "success" << std::endl;
    }
}

SetFirmwareEnvironmentVariable возвращает 0 и GetLastError() возвращает 5 (доступотказано).Я также попытался записать в BootOrder переменную, и она была успешно завершена.

1 Ответ

0 голосов
/ 30 мая 2019

Согласно инструкции на MSDN .

Чтобы записать переменную среды встроенного ПО, учетная запись пользователя, приложение работает под, должен иметь SE_SYSTEM_ENVIRONMENT_NAME привилегия. Универсальное приложение Windows должно быть запущено от администратора учетной записи и следуйте требованиям, изложенным в прошивке Access UEFI переменные из универсального приложения для Windows.

Настройка пользовательских привилегий для учетной записи в Windows

Аналогичное обсуждение: Как установить переменную среды встроенного ПО в драйвере UEFI

...