我试图在c ++中运行一个代码,这将导致在启动时使用注册表运行的.exe文件...但问题是代码结果失败而没有显示任何错误...我在devcpp中编译代码... 代码是
void createkey(char *path)
{
int reg;
HKEY hkey,Hkey1;
DWORD ptr;
reg=RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"),0,KEY_SET_VALUE,&hkey);
if(reg=ERROR_SUCCESS)
cout<<"success"<<endl;
else
cout<<"failure"; //(a)
cout<<reg<<endl; //(b)
if(reg==0)
{
RegSetValueEx(hkey,TEXT("key"),0,REG_SZ,(BYTE*)path,strlen(path));
}
}
在命令行失败,0被打印为(a)和(b)...(不知道如何两个意思完全相反的事情)....传递给regsetvalueex的char *路径是“c:/Dev-Cpp/bin/Untitled2.exe”...我确信这些功能不起作用,因为密钥没有出现在运行密钥中(我使用regedit检查)...
答案 0 :(得分:2)
if(reg=ERROR_SUCCESS)
这是一个赋值,你需要使用==运算符。大多数现代编译器警告这一点,请务必更新您的。您可能遇到访问被拒绝错误,无法在没有提升的情况下写入HKLM \ Software。
答案 1 :(得分:0)
标准用户没有HKLM的写入权限。您需要提升此过程。