【问题标题】:C# - How to show the full Windows 10 build number?C# - 如何显示完整的 Windows 10 内部版本号?
【发布时间】:2019-02-02 03:14:16
【问题描述】:

如何在 C# 上显示完整的 Windows 10 构建?

我目前正在使用Environment.OSVersion.VersionString,但它没有显示完整的内部版本号

结果:

微软视窗 NT 10.0.17134.0

但我想要最后一个数字,我的完整版本:10.0.17134。228

我想知道如何显示最后一个丢失的号码。不仅在哪里可以找到号码。获取它的 c# 代码。

【问题讨论】:

  • Microsoft Docs 说:'从 Windows 8 开始,OSVersion 属性为所有 Windows 平台返回相同的主要和次要版本号。因此,我们不建议您检索该属性的值来确定操作系统版本。'
  • 您建议检查用户是否使用最新的 Windows 版本/内部版本?第一个 17134 版本在 4 月发布,但微软发布了 9 个新版本,如何查看用户是否使用的是最新版本?
  • 对不起朋友,我不知道。刚刚偶然发现该链接并想分享该信息 =)
  • P-Invoke GetVersionEx - 见related question

标签: c# .net windows-10


【解决方案1】:

得到你想要的东西的俗气的方式:

Process.Start(new ProcessStartInfo
        {
            FileName = @"C:\Windows\System32\cmd.exe",
            Arguments = "/c ver",
            RedirectStandardOutput = true,
            UseShellExecute = false
        }).StandardOutput.ReadToEnd().Trim();

返回一个字符串,如:
Microsoft Windows [版本 10.0.19043.1052]

【讨论】:

    【解决方案2】:

    你必须结合这两个值来获得“操作系统构建”:

    RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
    
    var _UBR = registryKey.GetValue("UBR").ToString();
    var _CurrentBuild = registryKey.GetValue("CurrentBuild").ToString();
    
    string _version = _CurrentBuild+"."+ _UBR;
    

    【讨论】:

      【解决方案3】:

      UBR 键中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ 中的 Windows 10 内部版本号 is stored in the registry

      以下是如何在代码中获取它:

      using Microsoft.Win32;
      
      // ...
      
      RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
      
      var buildNumber = registryKey.GetValue("UBR").ToString();
      

      编辑:修复了值名称以获得正确的 OP 数字。归功于 Jorge Aguiar 的正确密钥。

      【讨论】:

      • 没用,它告诉我:17134,我正在寻找 228 的值。在当前构建之后。
      • 修复了 Jorge Aguiar 识别的正确密钥。这应该可以满足您的需求@saulob。
      • 这是“使用 Microsoft.Win32”而不是“使用 Microsoft.Windows”,我编辑了 :)
      【解决方案4】:

      您可以在

      处获取最后一个丢失的号码

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR

      (它是一个 DWORD 值。在某些 Windows 版本中可能会丢失。)

      【讨论】:

      • @LewsTherin 否,CurrentBuild值,在提供的示例中,包含 17134,而不是 228。
      • 我的错误,豪尔赫是正确的。这将使 OP 得到他想要的号码。
      • @LewsTherin 他试图在CurrentBuild 之后获得数字,在他的示例中是228,它存储在我提到的注册表项中
      • 是的,我修正了我的答案并发表了评论,承认您拥有正确的密钥。我的错。
      • 正确,结合我的部分答案-获取号码的代码是:Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows NT\\CurrentVersion").GetValue("UBR");
      猜你喜欢
      • 2020-10-03
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2021-11-15
      • 2010-11-09
      • 2017-02-08
      相关资源
      最近更新 更多