首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++批改注册表出错

2012-11-11 
C++修改注册表出错先上代码bool automatic_regedit(const char* value){HKEY hroot HKEY_CLASSES_ROOTH

C++修改注册表出错
先上代码

bool automatic_regedit(const char* value)
{
HKEY hroot = HKEY_CLASSES_ROOT;
HKEY hkey;

const char* subkey = ".demo\\shell\\AES解密\\command";
DWORD dw;

long result = RegCreateKeyEx(hroot,subkey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS|KEY_WRITE,NULL,&hkey,&dw);

if(result!=ERROR_SUCCESS)
{
cout<<"result1 = "<<result<<endl;
return false;
}

result = RegSetValueEx(hkey,NULL,0,REG_SZ,(unsigned char*)value,(DWORD)strlen(value));

cout<<"lenth = "<<strlen(value)<<endl;
cout<<"value = "<<value<<endl;
if(result!=ERROR_SUCCESS)
{
cout<<"result2 = "<<result<<endl;
return false;
}

return true;
}

代码的传入值为"F:\\Demo\\Debug\\Demo.exe %1"

MSDN上说RegSetValueEx的第二个参数为NULL或者""时,即设置键的默认值,但是我的程序返回值是5,有人说是权限问题,但是我创建注册表的时候用的KEY_ALL_ACCESS|KEY_WRITE,权限应该够了啊。。。。。

如果把第二个参数改成其他的,比如"key"什么的,都能注册成功啊,真是相当纠结,求高手解答。。。。









[解决办法]
返回值5代表"拒绝访问".

提供更多的环境信息,如操作系统版本,用户情况(是否Administrator等),或许能获得大家更多的帮助.

热点排行