微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 32 位应用程序的 Windows 产品名称不同

如何解决为什么 32 位应用程序的 Windows 产品名称不同

我可以使用 C# 从注册表中读取 Windows“产品名称

Registry.GetValue ( @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName","" )

我运行的是 64 位版本的 Windows Pro,但从 32 位应用程序返回“Windows 10 Enterprise”。

事实上,如果我查看注册表,我可以在密钥中看到这一点

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

值为“Windows 10 Pro”,但在密钥中

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion

它是“Windows 10 企业版”。

这有意义吗?

是否有一种简单(即一行)的方法获取真实的产品名称

解决方法

只要您不想支持 Windows Vista 之前的操作系统版本,就可以使用 GetProductInfo

,

我不知道为什么 32 位和 64 位配置单元不同。在我全新安装的 Windows 10 Pro x64 21H1 中,32 位版本的 Edition"Enterprise"ProductName"Windows 10 Enterprise"。 64 位注册表具有正确的 "Pro" 值。

我的 32 位进程默认使用 x64 操作系统上的 32 位注册表。如果代码确实在 32 位操作系统上运行,我想介绍这种情况。

它不是单行的,但我用这段代码根据操作系统选择了注册表。

var hklm64 = RegistryKey.OpenBaseKey(
  RegistryHive.LocalMachine,Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32
);

RegistryKey rk = hklm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");

string product = (string)rk.GetValue("ProductName");
string edition = (string)rk.GetValue("Edition");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。