2011-09-11 34 views
0

我想运行在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”...我相信这些函数不起作用,key不会出现在运行键(我使用regedit检查)...

回答

2
if(reg=ERROR_SUCCESS) 

这是一个任务,你需要使用==操作符。大多数现代编译器对此提出警告,一定要更新你的。您可能会遇到访问被拒绝的错误,无法在没有提升的情况下写入HKLM \ Software。

+0

@hans ...这是一个愚蠢的错误,我承诺..但仍然是我的setvalue函数失败...当你告诉这个过程需要运行提升时,你是否意味着这个... ...我怎样才能配置devcpp输出最大警告....? – avinash

+0

RegSetValueEx的最后一个参数也是错误的。而你的路径斜线倾向于错误的方式。并确保你的客户了解你正在放慢这个功能的启动时间,并给他们一个禁用它的方法。 –

+0

@hans ...我如何配置devcpp输出最大警告(即如何实现-Wall -Wextra -ansi -pedantic)....? – avinash

0

标准用户无权写入HKLM。你需要运行这个提升的过程。

相关问题