【发布时间】:2011-10-04 09:07:27
【问题描述】:
我需要通过在注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes 中更改它来设置 ActivePowerScheme。 所以我尝试用winapi函数RegOpenKeyEx和RegSetValueEx来做
wchar_t *PowerScheme=TEXT("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c");
HKEY hRootKey = HKEY_LOCAL_MACHINE;
PWCHAR sKey = TEXT("SYSTEM\\CurrentControlSet\\Control\\Power\\User\\PowerSchemes");
PWCHAR sActivePowerS = TEXT("ActivePowerScheme");
HKEY hKeyResult = NULL;
//open
if (RegOpenKeyEx(hRootKey,sKey,0,KEY_ALL_ACCESS,&hKeyResult)!=ERROR_SUCCESS) {
//it is always failing with error 0 !
DWORD dw = GetLastError();
}
但是 RegOpenKeyEx() 总是以错误 0 失败,这意味着“操作成功完成”。并且 RegSetValueEx() 返回相同的值。
if(RegSetValueEx(hKeyResult,sActivePowerS,0,REG_SZ,
(BYTE *)PowerScheme,wcslen(PowerScheme))!=ERROR_SUCCESS) {
//it is always failing with error 0
DWORD dw = GetLastError();
}
当然,当前的电源方案不会改变价值。但是根据msdn: "如果函数成功,返回值为 ERROR_SUCCESS。 如果函数失败,返回值是一个非零的错误码”。
我将不胜感激您的任何回答。
附:它在 Windows 7 中编译并以管理员权限执行
【问题讨论】:
-
RegOpenKeyEx()返回什么值?
标签: c++ winapi windows-7 registry