web-dev-qa-db-ja.com

Windows 10がバージョン番号6.3を返すのはなぜですか?

Windows 10では、VB.NETコードEnvironment.OS.VersionStringMicrosoft Windows NT 6.3.9600.0を出力します。 Microsoftのドキュメント によると、Windows 10のバージョン番号は10.0です。なぜVB.NETはWindows 10をWindows 8.1として認識するのですか

コマンドプロンプトでsysteminfo | findstr /C:"OS"を実行すると、「OSバージョン」で10.0.10240 N/A Build 10240の正しい値が返されました。

8
Dog Lover

Windows 8.1からアップグレードしたという事実を取り上げているからです。使用しているメソッドはレジストリを調べています。意図したとおりに機能しています。環境変数を使用して、どのオペレーティングシステムが使用されているかを判断するより適切な関数があります。 Stackoverflowではないため、コードを提供できません

–ラムハウンド8月26日1:12

それが一言で言えば答えです。アップグレード中、レジストリはビルド番号を古いものから新しいものに変更しません。くっつくだけ。

3
RookieTEC9

これは、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersionからCurrentVersionを読み取っていたためであり、すでに述べたように、そのエントリはWindowsの更新で更新された変更を取得しません。

確認するエントリは、同じキーのCurrentMajorVersionNumberCurrentMinorVersionNumberCurrentBuildNumberです。

0
Nuno André

したがって、根本的な問題に戻るために、私はWindows Management Instrumentation(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
0
egray