我可以阅读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");