使用注册表在启动时运行程序

时间:2011-09-11 18:04:52

标签: windows registry

我试图在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检查)...

2 个答案:

答案 0 :(得分:2)

if(reg=ERROR_SUCCESS) 

这是一个赋值,你需要使用==运算符。大多数现代编译器警告这一点,请务必更新您的。您可能遇到访问被拒绝错误,无法在没有提升的情况下写入HKLM \ Software。

答案 1 :(得分:0)

标准用户没有HKLM的写入权限。您需要提升此过程。