2011-09-11 5 views
0

レジストリを使用して起動時に.exeファイルが実行されるようなコードをC++で実行しようとしていますが、コード結果がエラーを表示せずに失敗するという問題があります。 ..私はどのように知らない(... コードは、コマンドラインの故障で起動時にprogを実行するためにレジストリを使用する

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)はしまった... devcppでコードをコンパイル2つの完全に反対のことを意味する).... * charset *パスは、regsetvalueexに渡された "c:/Dev-Cpp/bin/Untitled2.exe" ...私は関数が機能していないと確信している実行キー(regeditを使ってチェック)...

答えて

2
if(reg=ERROR_SUCCESS) 

これは割り当てです。==演算子を使用する必要があります。現代のコンパイラはこれについて警告していますが、あなたのものを更新してください。アクセスが拒否された可能性があります。高度なしでHKLM \ Softwareに書き込むことはできません。

+0

@hans ...それは私がコミットしたばかげたエラーでした。でも、まだ私のsetvalue関数は失敗しました...あなたはこのプロセスを昇格させる必要があると言いましたが、これはどういう意味ですか?最大の警告を出力するためのdevcpp ....? – avinash

+0

RegSetValueExの最終パラメータも間違っています。あなたのパススラッシュは間違った方法で傾いています。また、お客様がこの機能の起動時間を遅くしていることを理解し、その機能を無効にする方法を教えてください。 –

+0

@hans ...どのようにして最大の警告(つまり、-Wall -Wextra -ansi -pedanticの実装方法)を出力するようにdevcppを設定できますか? – avinash

0

標準ユーザーには、HKLMへの書き込みアクセス権がありません。このプロセスを実行する必要があります。

関連する問題