使用WinAPI设置NVRAM变量
我正在尝试使用WinAPI(SetFirmWareenEnvironmentVariable)设置自己的NVRAM变量(nv+rt+bs)。它使用我的变量失败,并使用BootOrder成功完成。我做错了什么?是否可以使用WinAPI设置我自己的变量 我正在尝试使用此代码设置变量使用WinAPI设置NVRAM变量,winapi,uefi,Winapi,Uefi,我正在尝试使用WinAPI(SetFirmWareenEnvironmentVariable)设置自己的NVRAM变量(nv+rt+bs)。它使用我的变量失败,并使用BootOrder成功完成。我做错了什么?是否可以使用WinAPI设置我自己的变量 我正在尝试使用此代码设置变量 void setMyNVRAM() { // here I setup SE_SYSTEM_ENVIRONMENT_NAME privilege uint16_t value = 0x5aa5;
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;
}
}
void setMyNVRAM()
{
//在这里,我设置了SE_系统_环境_名称权限
uint16_t值=0x5aa5;
如果(!SetFirmwareEnvironmentVariable(L“MY_VARIABLE”,
L“{12345678-1234-1234-1234-123456789012}”,&value,sizeof(value)))
{
std::cout根据图纸上的说明
要写入固件环境变量,请使用
正在运行的应用程序必须具有SE_SYSTEM_ENVIRONMENT_名称
权限。必须由管理员运行通用Windows应用程序
帐户并遵循Access UEFI固件中概述的要求
来自通用Windows应用程序的变量
类似的讨论:根据上的说明
要写入固件环境变量,请使用
正在运行的应用程序必须具有SE_SYSTEM_ENVIRONMENT_名称
权限。必须由管理员运行通用Windows应用程序
帐户并遵循Access UEFI固件中概述的要求
来自通用Windows应用程序的变量
类似的讨论:文档建议错误代码是系统固件返回的错误的映射。如果尝试从EFI外壳创建相同的变量会发生什么情况?可能变量名或命名空间GUID仅限于匹配现有值。文档建议错误代码是系统固件返回的错误的映射。如果尝试从EFI外壳创建相同的变量,会发生什么?可能是变量名或命名空间GUID限制为与现有值匹配。请回答。我的代码中有一条注释说我设置了SE_system_ENVIRONMENT_name特权。我的应用程序是从管理员帐户运行的。我在另一台计算机上尝试了这段代码,效果很好。也许这类似于固件保护。一旦我发现,我会写一个答案。有一件事我不明白,那就是如何将功能标记添加到程序集清单。谢谢你的回答。我的代码表明我设置了SE_SYSTEM_ENVIRONMENT_NAME权限。我的应用程序是从管理员帐户运行的。我在另一台计算机上尝试了这段代码,效果非常好。可能是固件保护。一旦发现,我会写一个答案。有一件事我不明白,那就是如何向程序集添加功能标签显示