为什么Windows 10返回版本号6.3?

为什么Windows 10返回版本号6.3?

在 Windows 10 上,VB.NET 代码Environment.OS.VersionString输出Microsoft Windows NT 6.3.9600.0。根据Microsoft 文档,Windows 10的版本号是10.0,那么为什么VB.NET会将Windows 10识别为Windows 8.1呢?

我在命令提示符中执行了此操作,它返回了“操作系统版本”下systeminfo | findstr /C:"OS"的正确值。10.0.10240 N/A Build 10240

答案1

因为它正在获取您从 Windows 8.1 升级的事实。您使用的方法是查看注册表。它按预期工作。有一个比使用环境变量确定正在使用的操作系统更合适的函数。我无法提供代码,因为这不是 Stackoverflow

— Ramhound 8 月 26 日 1:12

简而言之,这就是答案。在升级过程中,注册表不会将版本号从旧版本更改为新版本。它只是保持不变。

答案2

因此,回到根本问题...我使用 Windows 管理规范 (WMI) 以您期望的方式生成 Windows 版本号。例如,它报告 10.0.10586

以下是一段简短的代码片段

Public Class OS

' Use Windows Management Instrumentation (WMI) to get the OS version
    Public Shared Function GetOSVersion() As String
        Dim answer As String = ""

        ' add Imports System.Management and add a resource to System.Management
        Dim osClass As New ManagementClass("Win32_OperatingSystem")
        For Each queryObj As ManagementObject In osClass.GetInstances()
            answer = DirectCast(queryObj.GetPropertyValue("Version"), String)
        Next

        Return answer
    End Function
End Class

答案3

这是因为您正在阅读CurrentVersionHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion并且正如已经说过的,该条目不会随着 Windows 更新而进行更新。

要检查的条目是同一键中的CurrentMajorVersionNumberCurrentMinorVersionNumber和。CurrentBuildNumber

答案4

6.3 是 Windows 的内部版本,这表明自 Windows 7 以来,没有发布任何重大版本,这与微软希望你相信的相反。Windows 7、8、10 等名称只是营销名称。他们决定跳过 9 以匹配 Mac OS X。但真正的版本号是 6.3

相关内容