次の場所にレジストリ キーを作成しようとしていますが、アクセス拒否エラーが発生します。
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram
コードは次のとおりです。
RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
次の場所にレジストリ キーを作成しようとしていますが、アクセス拒否エラーが発生します。
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram
コードは次のとおりです。
RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
ユーザー アカウント制御 (UAC)を使用している可能性があります。これは、たとえあなたが管理者であっても、あなたのアクセス トークンには、でレジストリ キーを作成するなどの操作を行うために必要な権限がないことを意味しますHKEY_LOCAL_MACHINE
。
ただし、UAC プロンプトを通過することで、特権を昇格できます。
Regedit には、実行する前にプロンプトを表示するUAC マニフェストが含まれており、必要なアクションを確実に実行できます。実行可能ファイルまたはショートカットを右クリックして、 [管理者として実行] を選択することもできます。
つまり、基本的に次の 3 つのオプションがあります。
最初の解決策は安全性が低く、最後の解決策は最も洗練されています (ただし、実際には多少の労力が必要な解決策でもあります)。
指定された場所にあるレジストリに書き込むための十分な権限を持つアカウントでアプリケーションを実行する必要があります。通常、HKEY_LOCAL_MACHINE
ブランチにはマシンのグローバル設定が含まれているため、パワー ユーザー用に予約されています。
以下の構文を試しました:
SETX /S [Machine Name] [Variable] [Value] /M
理由はわかりませんが、Windows 7 では、システム変数を追加するマシン名を指定すると、ローカル マシンであっても機能します。