http://tack41tu.hatenablog.com/entry/2018/07/30/214927

でClickOnceアプリをインストールする際にレジストリを編集する必要がある事を書いた。

レジストリエディタで編集するのは面倒だし運用も大変なので、レジストリを編集するアプリを作成した。

https://msdn.microsoft.com/en-us/library/ee308453.aspx

にある以下のコードを書いて実行し、正常終了するのだがレジストリエディタで確認すると変更が反映されておらず、ClickOnceの動作も変わらない。

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\MICROSOFT\\.NETFramework\\Security\\TrustManager\\PromptingLevel");  
key.SetValue("LocalIntranet", "Enabled");
key.Close();

どうもレジストリは32bit, 64bitで別の領域らしく、プログラム作成時にターゲットCPUをAnyとし、x86優先とした結果、32bitの領域を更新してしまっているらしい。

https://aonasuzutsuki.hatenablog.jp/entry/2015/12/08/173819

を参考に以下のように記載したところ、想定通りに動作するようになった。

Microsoft.Win32.RegistryKey key_base, key;
key_base = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var key = prerKey.CreateSubKey("SOFTWARE\\MICROSOFT\\.NETFramework\\Security\\TrustManager\\PromptingLevel",);
key.SetValue("LocalIntranet", "Enabled");
key.Close();