2

次の場所にレジストリ キーを作成しようとしていますが、アクセス拒否エラーが発生します。

HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram

コードは次のとおりです。

RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
4

3 に答える 3

6

ユーザー アカウント制御 (UAC)を使用している可能性があります。これは、たとえあなたが管理者であっても、あなたのアクセス トークンには、でレジストリ キーを作成するなどの操作を行うために必要な権限がないことを意味しますHKEY_LOCAL_MACHINE

ただし、UAC プロンプトを通過することで、特権を昇格できます。

Regedit には、実行する前にプロンプ​​トを表示するUAC マニフェストが含まれており、必要なアクションを確実に実行できます。実行可能ファイルまたはショートカットを右クリックして、 [管理者として実行] を選択することもできます。

つまり、基本的に次の 3 つのオプションがあります。

  • UAC をオフにする
  • 管理者として実行を使用
  • 実行可能ファイルに UAC マニフェストを含める

最初の解決策は安全性が低く、最後の解決策は最も洗練されています (ただし、実際には多少の労力が必要な解決策でもあります)。

于 2012-04-14T07:23:17.403 に答える
5

指定された場所にあるレジストリに書き込むための十分な権限を持つアカウントでアプリケーションを実行する必要があります。通常、HKEY_LOCAL_MACHINEブランチにはマシンのグローバル設定が含まれているため、パワー ユーザー用に予約されています。

于 2012-04-14T07:11:32.420 に答える
1

以下の構文を試しました:

SETX /S [Machine Name] [Variable] [Value] /M

理由はわかりませんが、Windows 7 では、システム変数を追加するマシン名を指定すると、ローカル マシンであっても機能します。

于 2012-10-04T12:29:22.190 に答える