64 位注册表项 OS 显示 32 位应用程序
Registrykey in 64 bits OS shows 32 bit applications
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
给我的结果与
相同
string registry_key_x64 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
都在 64 位上 OS。当我进入注册表编辑器并转到
"*SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*"
它向我展示了其他应用程序,然后我的代码提供了我。
例如在注册表编辑器中我有 "wampserver"。 See picture of my Registry Editor。
但是当我 运行 我的代码显示不同的应用程序时,我在我的注册表编辑器中有(它显示 32 位应用程序列表)Command Prompt (Running Code)
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
if (subkey.GetValue("DisplayName") != null)
{
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
}
}
很可能您的应用程序作为 32 位应用程序运行,因此 returns 注册表的 WoW 节点。将您的应用程序构建为 AnyCPU 或 64 位应用程序。
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
给我的结果与
相同string registry_key_x64 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
都在 64 位上 OS。当我进入注册表编辑器并转到
"*SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*"
它向我展示了其他应用程序,然后我的代码提供了我。
例如在注册表编辑器中我有 "wampserver"。 See picture of my Registry Editor。
但是当我 运行 我的代码显示不同的应用程序时,我在我的注册表编辑器中有(它显示 32 位应用程序列表)Command Prompt (Running Code)
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
if (subkey.GetValue("DisplayName") != null)
{
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
}
}
很可能您的应用程序作为 32 位应用程序运行,因此 returns 注册表的 WoW 节点。将您的应用程序构建为 AnyCPU 或 64 位应用程序。