为什么Windows ProductName与32位应用程序不同



我可以阅读Windows"产品名称";使用从C#中的注册表

Registry.GetValue ( @"HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion", "ProductName", "" )

我运行的是64位版本的Windows Pro,但从32位应用程序来看,这会返回";Windows 10企业版";。

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

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion

值为"0";Windows 10 Pro";,但在密钥中

HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindows NTCurrentVersion

它是";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(@"SOFTWAREMicrosoftWindows NTCurrentVersion");
string product = (string)rk.GetValue("ProductName");
string edition = (string)rk.GetValue("Edition");

最新更新