2017-05-06 14 views
0

天気をチェックするRunOnStartup関数を作成しようとしたときに、キーが存在していない場合、ユーザーが削除したい場合、Access Deniedという問題が発生しました。より具体的にはこれ。C#アクセスが拒否されましたレジストリ値の削除

System.UnauthorizedAccessException: 'Cannot write to the registry key.' 

これは私のコードです。

私はキーを作成できますが、それを削除しないでください。かなり奇妙です。おそらく私が行方不明のパーミッションがある、私は管理モードで実行しようとしたが、同じことが起こった。あなたのコード内

+0

があなたのコード内のロジック上の欠陥ではないですか? 'keyName'はHKCUから削除しようとしている間にHKLMハイブを指します。私はこれを試していないが、おそらく値が存在しない場合は例外がスローされます。 – rene

答えて

0

2つのエラー:

  • 例外UnauthorizedAccessException - 「レジストリキーに書き込むことができない」あなたはRegistryKeywritableモードを開けなかったことを示しています。代わりに、削除する前に書き込みモードで開く必要があります。あなたはこのように、2番目の引数としてtrueを渡していることを確認してください:

    RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\..", true); 
    reg.DeleteValue("MyApp"); 
    
  • また、最初にKeyNameif条件チェックHKEY_LOCAL_MACHINEであなたの挿入/削除のに対し、後でので、あなたはおそらくそれらに一貫性を持たせる必要があるRegistry.CurrentUserを使用してHKEY_CURRENT_USERを参照してください。

    string KeyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; 
    
+0

ありがとう!!!!!私はあなたの提案の両方をして、それは働いたが、私は1つだけ行っていない場合は、ありがとう! –

+0

問題ありません。お役に立てて嬉しいです! – degant

関連する問題