c# - 读取注册表和 Wow6432Node key

标签 c# registry 64-bit wow64

我有一些代码可以读取注册表并在 HKEY_LOCAL_MACHINE\Software\App\ 中查找值,但是在 64 位版本的 Windows 上运行时,该值位于 HKEY_LOCAL_MACHINE\Software 下\Wow6432Node\App\

我应该如何最好地处理这个问题?我需要 64 位安装程序还是应该重写我的代码以检测这两个位置?

最佳答案

在 x64 机器上,这是一个如何访问注册表的 32 位 View 的示例:

using (var view32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser,
                                            RegistryView.Registry32))
{
  using (var clsid32 = view32.OpenSubKey(@"Software\Classes\CLSID\", false))
  {
    // actually accessing Wow6432Node 
  }
}

...与...相比

using (var view64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser,
                                            RegistryView.Registry64))
{
  using (var clsid64 = view64.OpenSubKey(@"Software\Classes\CLSID\", true))
  {
    ....
  }
}

关于c# - 读取注册表和 Wow6432Node key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039186/

相关文章:

c# - 在 .NET 的控制台窗口中更改字体

c# - 如何在 .NET 中卡住冰棒(使类不可变)

registry - Bootstrap "Unable to read registry value"

Android:如何将变量值存储到注册表?

在 c 中将 64 位 int 从主机转换为网络顺序,我只得到零

我们可以使用为 32 位编译的应用程序调用为 64 位编译的 DLL 的函数吗?

c# - 如何在 Jquery 日期时间选择器中更改日期格式

c# - 我可以将参数从一种方法定义到另一种方法吗

windows - windows native docker有第三方私有(private)注册表吗?

ios - SIGSEGV 和 SIGBUS 使用 Xamarin.iOS 统一 API 崩溃