web-dev-qa-db-ja.com

レジストリキーに書き込めません。UnauthorizedAccessExceptionが発生します

LOCAL_MACHINEのレジストリキーに書き込もうとするWindowsサービスがあります

キーは、Windowsサービスとスタンドアロンのコントロールウィンドウを制御するWindowsインストーラーパッケージの一部として作成されます。

コントロールウィンドウはレジストリキーを読み書きできますが、ローカルサービスに完全なアクセス許可を与えても、レジストリキーに書き込むことができません。

これは例外をスローするコードです:

private void updateLocalRegistryVersion(Double newVersion)
{
    RegistryKey rk = Registry.LocalMachine;
    RegistryKey sk = rk.OpenSubKey(@"Software\CompanyName\Monitoring\Values");

    sk.SetValue("scriptversion", newVersion.ToString());
}

助言がありますか?

34
dmck

RegistryKey.OpenSubKey(string)は、書き込み用のキーを開きません。 OpenSubKey(string, bool)オーバーロードを使用して、キーを書き込み可能にすることを指定してください。

73
Nicole Calinoiu