【发布时间】:2011-03-06 00:06:25
【问题描述】:
我有一个关于 RegOpenKeyEx 的问题,代码:
#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。
【问题讨论】:
标签: c++ winapi windows-7 registry uac