5
我有一個關於RegOpenKeyEx,代碼問題:RegOpenKeyEx返回ERROR_SUCCESS,但它不應該(Windows 7)中
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#pragma comment (lib, "Advapi32.lib")
int main() {
TCHAR *keyName = _T("SOFTWARE\\foobar2000\\capabilities");
HKEY key = NULL;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyName, 0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS) {
printf("open key failed!\n");
return -1;
} else {
printf("open key success!\n");
}
TCHAR *value = _T("123");
if (RegSetValueEx(key, _T("xxx"), 0, REG_SZ,
(const BYTE *)value, sizeof(TCHAR) * (_tcslen(value) + 1)) != ERROR_SUCCESS) {
printf("set value failed!\n");
}
RegCloseKey(key);
return 0;
}
保存在這樣的代碼reg.cpp,並在命令模式:
CL reg.cpp
和我REG.EXE,運行它:
d:\ tmp目錄> REG.EXE
開啓關鍵成功!
但該值尚未寫入註冊表中。
另一個奇怪的是,如果我使用visual studio創建CLI項目並將代碼粘貼到main()中,RegOpenKeyEx()將返回false。
該平臺是Windows 7,並啓用UAC。