2011-09-11 62 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。你需要運行這個提升的過程。

相關問題