32 OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
33 LookupPrivilegeValue(NULL, SE_SYSTEM_ENVIRONMENT_NAME, &tkp.Privileges[0].Luid);
34 tkp.PrivilegeCount = 1;
35 tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
36 AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
39int main(
int argc,
char *argv[]) {
41 printf(
"Usage:\n nvram var\n nvram var value\n");
45 const char *variable = argv[1];
46 const char *guid =
"{7C436110-AB2A-4BBB-A880-FE41995C9F82}";
47 int code = EXIT_SUCCESS;
52 char readValue[256] = {0};
53 uint32_t readValueSize = GetFirmwareEnvironmentVariableA(
54 variable, guid, readValue,
sizeof(readValue)-1);
55 if (readValueSize > 0) {
56 printf(
"%s = %s\n", variable, readValue);
58 printf(
"Failed to read %s, code %u\n",
59 variable, (
unsigned)GetLastError());
63 bool ok = SetFirmwareEnvironmentVariableA(
64 variable, guid, argv[2], strlen(argv[2]));
66 printf(
"%s was set to %s\n", variable, argv[2]);
68 printf(
"Failed to set %s to %s, code %u\n",
69 variable, argv[2], (
unsigned)GetLastError());