我正在运行编译为 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}
.
我该怎么做?使用 aRegistryView
会产生意想不到的结果。例如,此OpenSubKey
调用返回 null:
keyPath = @"Software\Classes\CLSID\" + clsid;
var regularx86View = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
var regularClassKey = regularx86View.OpenSubKey(keyPath, RegistryKeyPermissionCheck.ReadSubTree);
如果我使用RegistryView.RegistryDefault
或RegistryView.Registry64
改为返回密钥 - 但我希望它在使用时返回 null,Registry64
因为 x64 视图中不存在该密钥,并且不应该发生重定向。
是在使用RegistryView
适当的方法,还是应该直接使用 WinAPI?