9

Google とここでの回答をしばらく検索したところ、レジストリに書き込むときに HKEY_CURRENT_USER を UAC なしで使用できるはずだという結論に達しました。とにかく、これはすべてのスレッドが述べているようです。私の問題は、このキーにアクセスして新しい値を書き込もうとすると、アクセス拒否エラーが発生することです。これは私のレジストリに何か問題があるためですか、それとも私が何か間違ったことをしているのですか? 私が使用しているコードは次のとおりです。

string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
RegistryKey startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);
startupKey.SetValue("Arebokerts application", '"' + Environment.CurrentDirectory +     "\\arebokert.exe" + '"', Microsoft.Win32.RegistryValueKind.String);

誰かとても親切で、この主題に光を当てることができますか? あらゆる種類のUACプロンプトから離れ、UAC権限なしで実行できるようにしたい. このコードは「UnauthorizedAccessException」をスローします。なにが問題ですか?

宜しくお願いします。

編集

コメントの David と Hans が指摘したように、この問題は何かがキーの変更を妨げていたことが原因でした。それがcomodoアンチウイルスであることがわかったので、オフにしました。これにより、アプリケーションが正常に機能しました。すべての応答に感謝します!

4

1 に答える 1

11

あなたのコードは問題なく、標準ユーザーはデフォルトで に書き込むことができますHKCU。問題は、システムがレジストリのその部分への書き込みアクセスを拒否していることです。最も可能性の高い説明は次のとおりです。

  1. このコードを実行するマシンには、書き込みアクセスを制限するためにその特定のキーが保護されています。これが regedit に該当するかどうかを確認します。キーに移動し、ツリー ビューでキーを右クリックして [アクセス許可] を選択します。ユーザー名を選択し、自分が持っている権限を確認します。フル コントロールと読み取りの両方に対して [許可] をオンにする必要があります。

  2. そのキーへの書き込みアクセスをブロックしているウイルス対策製品またはマルウェア対策製品を実行しています。このキーはマルウェアによって広く使用されているため、マルウェア対策製品が反撃することは珍しくありません。これが原因であるかどうかを診断するには、すべてのウイルス対策製品またはマルウェア対策製品を一時的に無効にします。

于 2013-10-01T14:45:28.237 に答える