使用管理员权限打开 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 位注册表资源管理器。
我试过如下:
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 位注册表资源管理器。