头大 ... 创建注册表的问题

lijiawlm 2009-08-13 10:58:31
先上代码

//strRegValName = "Hide";

//
HKEY hKey , hKeySub;
DWORD dwType = REG_SZ; //定义读取的数据类型
DWORD dwLen = 256; //长度
LPCTSTR RegSubKeyPath = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\");
DWORD dwCreateType = REG_CREATED_NEW_KEY;
//HKEY_CURRENT_USER
if (::RegOpenKeyEx(HKEY_CURRENT_USER , RegSubKeyPath ,
0 , KEY_CREATE_SUB_KEY | KEY_WRITE , &hKey) == ERROR_SUCCESS)
{
if(::RegCreateKeyEx(hKey , strRegValName , 0, NULL ,
REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL ,
&hKeySub ,&dwCreateType) != ERROR_SUCCESS)
{
//
DWORD dwErrCode = GetLastError();
CString strErr ;
strErr.Format(_T("注册表打开失败 , 错误代码%d" ) , dwErrCode);
::AfxMessageBox(strErr);
RegCloseKey(hKey);
return FALSE;
}

我想创建一个HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 下的子键
为什么这个代码一运行 就创建成
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hide下创建子键??
这段代码以前都运行的挺好的
看了半天的MSDN 都没看出个所以然出来
...全文
73 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijiawlm 2009-08-13
  • 打赏
  • 举报
回复
晕 我把那个创建的函数删掉了...就好了...
直接调用RegSetValueEx这个函数...
lijiawlm 2009-08-13
  • 打赏
  • 举报
回复
Hide也写进去了 后面的代码也贴上来

if (RegSetValueEx(hKey , strRegValName , 0 , dwType , (BYTE*)(LPCTSTR) strRegVal , strRegVal.GetLength()) != ERROR_SUCCESS)
{
DWORD dwErrCode = GetLastError();
CString strErr ;
strErr.Format(_T("注册表打开失败 , 错误代码%d" ) , dwErrCode);
::AfxMessageBox(strErr);
RegCloseKey(hKey);
return FALSE;
}
lijiawlm 2009-08-13
  • 打赏
  • 举报
回复
创建完了就是这么个样子
老邓 2009-08-13
  • 打赏
  • 举报
回复
有没有错误代码?
那个Hide是咋出来的?
单步调试的时候,RegSubKeyPath 的值确定没问题?
把原来的键都删除掉,再测试。
xingzhe2001 2009-08-13
  • 打赏
  • 举报
回复
Hide不就是你创建出来的子键么
lijiawlm 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 loaden 的回复:]
LPCTSTR RegSubKeyPath = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\");
去掉最后的\\
变成:
LPCTSTR RegSubKeyPath = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced");
[/Quote]
测试过了 一样的...
老邓 2009-08-13
  • 打赏
  • 举报
回复
LPCTSTR RegSubKeyPath = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\");
去掉最后的\\
变成:
LPCTSTR RegSubKeyPath = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced");
lijiawlm 2009-08-13
  • 打赏
  • 举报
回复
顶 没有人碰到这种问题吗
cl383804490 2009-08-13
  • 打赏
  • 举报
回复
顶一下

64,690

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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