使用管理员权限打开 Regedit 以查看 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node

Open Regedit with admin privileges to see HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node

我试过如下:

  System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo {
    Arguments        = "",
    FileName         = "regedit.exe",
    UseShellExecute  = true,
    Verb             = "runas",
    WorkingDirectory = Environment.CurrentDirectory
  };
  try {
    System.Diagnostics.Process.Start(process);
  } catch {
    // error handling
  }

我使用的 C# 应用程序 运行 代码已提升并打开 Regedit,但它既不提示 UAC 也不显示 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node。该密钥仅在我手动打开 regedit 时可见。

我做错了什么?

问题已解决。

在我的应用程序中,平台设置为“任何 CPU”,它 运行 作为 32 位进程,因此 regedit.exe 的调用也只显示 32 位注册表项.通过将我的应用程序平台明确更改为“x64”,64 位注册表将打开,并且 64 位注册表中的特殊 32 位路径 (HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node) 存在并按预期显示。

我很困惑,因为在 32 位应用程序中,您可以在使用 RegistryView.Registry64 时以编程方式访问 64 位注册表。 More on that here。但不幸的是,您无法通过 32 位应用程序打开 64 位注册表资源管理器。