【问题标题】:Wrong OS Version Details are returned返回错误的操作系统版本详细信息
【发布时间】:2021-05-21 11:21:45
【问题描述】:

我想在 C# .NET 代码中获取底层机器操作系统信息及其其他详细信息。

在 Windows 10 Pro 机器上运行以下代码时,它返回错误值“Windows 10 Enterprise”。

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

Registry上还有其他key需要查询吗?否则它是通过其次要和主要版本详细信息手动解释的?

【问题讨论】:

  • 这能回答你的问题吗? Detect Windows version in .net
  • 另请阅读accepted answer中的“重要说明”
  • @nilsK,它没有提供 Windows 10 Pro 等版本详细信息的确切答案。另外,为什么上述方法不能在特定机器上运行以获得必要的版本?它提供了类似 Win 10 的操作系统名称,但没有正确提供版本详细信息。

标签: c# .net operating-system registry


【解决方案1】:

根据您的系统,需要在 32 位或 64 位注册表上明确查询。

此解决方案不使用任何技巧来获取 OS 版本。当您导航到路径时,它会提供与您在注册​​表中看到的完全相同的值。

例如。就我而言,它返回“Windows 10 Pro”

RegistryKey localKey = null;
if (Environment.Is64BitOperatingSystem) {
     localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
     RegistryView.Registry64);
} else {
     localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
     RegistryView.Registry32);
}
var productName = localKey.OpenSubKey(@ "SOFTWARE\Microsoft\Windows 
                  NT\CurrentVersion").GetValue("ProductName").ToString();
Console.WriteLine("ProductName : " + productName);

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 2010-11-27
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2012-03-19
    • 2019-10-12
    相关资源
    最近更新 更多