Betriebssystem auslesen für Windows 10

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Betriebssystem auslesen für Windows 10

    Ist es möglich das Betriebssystem zu ermitteln bei Win10= Da Windows 10 noch nicht so lange draußen ist , finde ich kaum was dazu, den Code den ich habe kommt immer Win8 raus , aber da es Wichtg ist welches Betriebssystem Installiert ist , weil sonst die falschen Funktionen aufgerufen werden.

    VB.NET-Quellcode

    1. Public Function GetWindwosClientVersion() As String
    2. Dim major As Integer = System.Environment.OSVersion.Version.Major
    3. Dim minor As Integer = System.Environment.OSVersion.Version.Minor
    4. Dim build As Integer = System.Environment.OSVersion.Version.Build
    5. If major = 4 AndAlso minor = 0 AndAlso build = 950 Then
    6. Return "Win95 Release 1"
    7. ElseIf major = 4 AndAlso minor = 0 AndAlso build = 1111 Then
    8. Return "Win95 Release 2"
    9. ElseIf major = 4 AndAlso minor = 3 AndAlso (build = 1212 OrElse build = 1213 OrElse build = 1214) Then
    10. Return "Win95 Release 2.1"
    11. ElseIf major = 4 AndAlso minor = 10 AndAlso build = 1998 Then
    12. Return "Win98"
    13. ElseIf major = 4 AndAlso minor = 10 AndAlso build = 2222 Then
    14. Return "Win98 Second Edition"
    15. ElseIf major = 4 AndAlso minor = 90 Then
    16. Return "WinMe"
    17. ElseIf major = 5 AndAlso minor = 0 Then
    18. Return "Win2000"
    19. ElseIf major = 5 AndAlso minor = 1 AndAlso build = 2600 Then
    20. Return "WinXP"
    21. ElseIf major = 6 AndAlso minor = 0 Then
    22. Return "Vista"
    23. ElseIf major = 6 AndAlso minor = 1 Then
    24. Return "Win7"
    25. ElseIf major = 6 AndAlso minor = 2 AndAlso build = 9200 Then
    26. Return "Win8"
    27. ElseIf major = 6 AndAlso minor = 2 AndAlso build = 9600 Then
    28. Return "Win8"
    29. ElseIf major = 10 AndAlso minor = 0 AndAlso build = 10240 Then
    30. Return "Win10"
    31. Else
    32. Return "Can not find os version."
    33. End If
    34. End Function​


    Ich hoffe diesmal muss ich keine 100 Zeilen lange Fehlermeldung mitsenden ;)

    Th3RaZe schrieb:

    das Betriebssystem zu ermitteln
    Klar.
    Hast Du ein W10, auf dem Du das testen kannst?
    Ich habe W8.1, da ist: major = 6, minor = 3, build = 9600.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ich hab auch Windows 10 Pro 64 Bit und wenn ich mir

    VB.NET-Quellcode

    1. System.Environment.OSVersion
    in einer MessageBox ausgeben lasse steht da: Microsoft Windows NT 6.2.9200.0

    EDIT:
    Habe gerade mal in der Registry geschaut, dort steht:

    CurrentMajorVersionNumber: 10 CurrentMinorVersionNumber: 0 CurrentBuild: 10586

    "Hier könnte Ihre Werbung stehen..."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()

    System.Environment.OSVersion arbeitet mit GetVersion bzw. GetVersionEx, dazu gibt es folgende Info von MS:
    With the release of Windows 8.1, the behavior of the GetVersion API has changed in the value it will return for the operating system version. The value returned by the GetVersion function now depends on how the application is manifested.

    Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersion will always return the version that the application is manifested for in future releases. To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.

    msdn.microsoft.com/en-us/libra…s724439%28v=vs.85%29.aspx

    Edit: Weiterer Link: msdn.microsoft.com/en-us/libra…n481241%28v=vs.85%29.aspx

    MichaHo schrieb:

    ich hab auch Windows 10 Pro 64 Bit ... System.Environment.OSVersion ... Microsoft Windows NT 6.2.9200.0

    ...Registry... CurrentMajorVersionNumber: 10 CurrentMinorVersionNumber: 0 CurrentBuild: 10586

    Ich tippe: von Windows 8 auf Windows 10 hochgegradet.
    Ich gehe davon aus, dass in Zukunft die Build-Nummern eh nicht mehr aussagekräftig sind, mit dem rollenden Upgrade der seit Win 10 zumindest in den Consumer-Versionen ganz anders funktioniert.
    Edit: siehe dazu auch obigen Post.

    Aber auch schon früher galt die hier notierte Aussage:
    Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. Rather than using the Version API Helper functions to determine the operating system platform or version number, test for the presence of the feature itself.

    Eine Aussage wie diese

    Th3RaZe schrieb:

    Wichtg ist welches Betriebssystem Installiert ist , weil sonst die falschen Funktionen aufgerufen werden.
    lässt mich eher unzureichendes Design vermuten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    lässt mich eher unzureichendes Design vermuten.


    Es ist ein Consolenprogramm, Wenn Windows 7 Installiert dann soll die Funktion xyz mit den Werten die für Windows 7 funktionieren ausgeführt werden das gleiche für win 8 und 10 , aber da ich Win10 immer noch nicht ermitteln kann , funktioniert das Programm unter Windows 10 auch nicht.

    MichaHo schrieb:

    Windows 7 Pro auf Windows 10 Pro

    Funktioniert AFAIR mehrstufig. Win7 -> Win8 -> Win8.1 -> Win10
    Daraus liesse sich schliessen, dass die erste (und zweite?) Stufe noch ein Voll-Upgrade war und die restlichen nach dem neuen rollierenden Verfahren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Th3RaZe schrieb:

    Value 6.3
    hab ich auch, ich hab ein W8.1, dass ich allerdings von winwm W10 zurückgesetzt habe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    ich hätte hierzu noch eine Frage die ein bisschen ins Detail geht.

    ​Ich würde gerne per VB.NET unter Windows 10 die Betriebssystembuild auslesen die unter Systemsteuerung > PC-Infos zu finden ist.
    In meinem fall momentan "15063.413".

    ​Mir wäre es wichtig das der Anhang "*.413" ausgelesen wird damit ich sehe auf welchem Updatestand der PC ist.

    ​Hoffe ich bin hier richtig, mit der Suchfunktion habe ich einige Threads gefunden aber keine Antwort auf meine Frage.

    Vielen Dank
    MFG
    ​Pedamo

    pedamo484 schrieb:

    "15063.413"
    Diesen Wert kannsz Du in das Build-Datum umrechnen, gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!