2016-05-01 15 views
0

私の目標は、起動時にアプリケーションを起動させることです。起動時にレジストリキーを書き込む

私の問題は、私のアプリケーションがregeditで '実行'に書いていないことです。

私はこのコード

RegistryKey rWrite = Registry.CurrentUser.OpenSubKey(@"HKey_Current_User\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

を持っていると私は、これはしかし、これはregeditとには何も書いていない

HKey_Current_User\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\run 

に自分のアプリケーションを書く行うにされているとしているものと信じています。

注記:

アプリケーションでは、強制的にユーザーが管理者権限で実行されます。彼らは管理者で実行したした場合、それは本質的にチェックし、彼らがいない場合、それは(あなたがあるCurrentUser内のあるCurrentUserを得たので、おそらく存在しない)あなたが書き込みアクセス権を持つキーを持っ

Environment.Exit(0); 
+0

あなたは実際にそれに '書き込み'しましたか?あなたは鍵を持っていますが、あなたはそれを書いていますか? –

+0

権限の問題を排除したように見えるので、これはおそらく32ビットプロセスが64ビットシステムで想定していない別の場所に書き込むレジストリ仮想化の結果でしょう。これが本当であれば、この質問はhttp://stackoverflow.com/questions/10533421/accessing-64-bit-registry-from-32-bit-applicationの複製として閉じられるべきです –

答えて

4

してプログラムを閉じて、その後メッセージボックスを表示しますただし、内部には値を設定していません。プログラムを開始したい場合は、アプリケーションパスを内部に設定する必要があります。あなたがそれをする方法は次のとおりです:

var rWrite = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

rWrite.SetValue("YourOwnKeyForYourApp", 
        AppDomain.CurrentDomain.BaseDirectory + AppDomain.CurrentDomain.FriendlyName); 
+0

RegistryKeyは無効な型ではありません与えられた文脈では、 – conjure

+0

ああ、私の悪い。私はそれを 'YourOwnKeyForYourApp'に変更しました。これは文字列でなければなりません。そこにあなたのアプリのキーとして必要な任意の文字列を書くことができます。 –

関連する問題