注册表不能添加键

熊国明 2011-12-15 10:37:27
用C++调用WINDOWS API:RegCreateKeyEx、RegSetValueEx在注册表中增加子键以及键值。函数执行结束后未看到新键值。代码如下:
HKEY hKey = NULL;
char buffer[MAX_PATH];
DWORD dwDispos = REG_CREATED_NEW_KEY;
char szNewKeyName[MAX_PATH] = "Software\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon\\Notify\\NTServer";

LONG lRet = RegCreateKeyEx(
HKEY_LOCAL_MACHINE,
szNewKeyName,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
&dwDispos);

if(ERROR_SUCCESS != lRet) return;

RegSetValueEx(hKey, "Asynchronous", 0, REG_DWORD, (BYTE*)1, 1);

strcpy(buffer,"C:\\Hooks\\HookAPI.dll");

RegSetValueEx(hKey, "DllName", 0, REG_EXPAND_SZ, (BYTE*)buffer, strlen(buffer));
RegCloseKey(hKey);

MSDN上有句话:An application cannot create a key that is a direct child of HKEY_USERS or HKEY_LOCAL_MACHINE. An application can create subkeys in lower levels of the HKEY_USERS or HKEY_LOCAL_MACHINE trees.
怀疑是由于进程权限不够,不能在HKEY_USERS or HKEY_LOCAL_MACHINE创建子键,在HKEY_CURRENT_USER键下可以创建……

在线求解!
...全文
123 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊国明 2011-12-15
  • 打赏
  • 举报
回复
原因是自己眼花了……哎~年纪大了,该转行咯!
bEst_02 2011-12-15
  • 打赏
  • 举报
回复
楼主是否开了360,如果开了把360关了在试试
熊国明 2011-12-15
  • 打赏
  • 举报
回复
可怜……连接分的人都没有,自己顶一下咯!
赵4老师 2011-12-15
  • 打赏
  • 举报
回复
用administrator权限的账户运行regedt32,在相关注册表项上点鼠标右键,选权限,增加指定用户对该项的访问权限。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧