x86としてコンパイルされたアプリケーションを実行しており、64ビットWindowsで実行されています。
ClickOnceファイルの関連付けに関する問題を修正するために、レジストリのx86ビューからいくつかのCLSID値を読み取り、それらをx64ビューに書き込みます。
明確にするために、これは、x86アプリケーションから、x86レジストリビューから同時に読み取り、次にx64レジストリビューに書き込みたいことを意味します。下で見つけた値を取得して、にHKEY_CURRENT_USER\Software\Classes\CLSID\{my clsid}
書き込みますHKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{my clsid}
。
これはどのようにすればよいですか?aを使用するRegistryView
と、予期しない結果が生じます。たとえば、このOpenSubKey
呼び出しはnullを返します。
keyPath = @"Software\Classes\CLSID\" + clsid;
var regularx86View = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
var regularClassKey = regularx86View.OpenSubKey(keyPath, RegistryKeyPermissionCheck.ReadSubTree);
使用するRegistryView.RegistryDefault
か、代わりにキーを返しますが、そのキーはx64ビューに存在せず、リダイレクトが行われないため、RegistryView.Registry64
使用するとnullが返されると予想されます。Registry64
適切な方法を使用してRegistryView
いますか、それともWinAPIを直接使用する必要がありますか?