OSVersion.ToString für eine IF-Schleife

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Sinlyu.

    OSVersion.ToString für eine IF-Schleife

    Hallo Zusammen

    Weiss nicht ob ich in diesem Abschnitt richtig bin. Dennoch meine Frage

    Ich muss für ein Programm, welches auf XP und windows 7 laufen soll, die OS Version ermitteln. Dies ist wichtig, da bei einer Variablen ( dir = New System.IO.DirectoryInfo(Appdata & "\Roaming\.minecraft\bin\")) auf xp und auf seven verschiedene Pfade verwendet werden müssen ( dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\"))

    Um diesen vergleich zu realisieren wollte ich eigentlich folgendes machen:

    VB.NET-Quellcode

    1. Dim OSVersion1 = System.Environment.OSVersion
    2. MineBox.Items.Clear()
    3. If OSVersion1.ToString Like "Microsoft Windows NT 5.1" Then
    4. dir = New System.IO.DirectoryInfo(Appdata & "\Roaming\.minecraft\bin\")
    5. ElseIf OSVersion1.ToString Like "Microsoft Windows 7" Then
    6. dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\")
    7. Else
    8. MsgBox("FEHLER", vbOKOnly, "FEHLER")
    9. Exit Sub
    10. End If


    Jetzt ha ich dass Problem, dass automatisch die MSGBox ausgegeben wird. Ich war natürlich so helle und hab das ganze mal mit folgender MSGBox getestet:

    VB.NET-Quellcode

    1. MessageBox.Show(System.Environment.OSVersion.ToString)
    . Da sagts mir (auf meinem XP Client) dass ich Microsoft Windows NT 5.1 laufen hab (der Wert ging noch weiter aber ich verwende like, falls bei anderen Clients hinten was ein wenig anderst ist).

    Was mach ich falsch, dass die IF Schlaufe nicht wie gewünscht gehandhabt wird??


    Grüsse aivilon

    picoflop schrieb:

    Was passiert bei Vista, Windows8, WindowsNxt?

    Windows 8 ist mir momentan mal noch wurst. zu Vista komme ich evtl noch, da ich aber grad keine zur hand hab kann ich es da auch nicht testen.

    AliveDevil schrieb:

    if-schleife.de/
    Like ist falsch.

    VB.NET-Quellcode

    1. If OSVersion1.Equals("Microsoft Windows NT 5.1")

    aber guck lieber hier im Forum nach einer Lib die dir das abnimmt. Ist glaub im SourceCode Austausch.
    Falls ichs finde editiere ich.
    Dort: [VB.NET] Betriebssystem ermitteln (inkl. Architektur)


    Danke, ich schaus mir mal an. Hab das problem jetzt aber grad gelöst:

    VB.NET-Quellcode

    1. Dim OSVersion1 = System.Environment.OSVersion
    2. Dim strXP As String = "Microsoft Windows NT 5.1"
    3. Dim strSeven As String = "Microsoft Windows NT 6.1"
    4. MineBox.Items.Clear()
    5. If OSVersion1.ToString.Substring(0, strXP.Length) = strXP.ToString.Substring(0, strXP.Length) Then
    6. dir = New System.IO.DirectoryInfo(Appdata & "\Roaming\.minecraft\bin\")
    7. ElseIf OSVersion1.ToString.Substring(0, strSeven.Length) = strSeven.ToString.Substring(0, strSeven.Length) Then
    8. dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\")
    9. Else
    10. MsgBox("FEHLER", vbOKOnly, "FEHLER")
    11. MessageBox.Show(System.Environment.OSVersion.ToString)
    12. Exit Sub
    13. End If
    14. For Each fi As System.IO.FileInfo In dir.GetFiles("*.jar")
    15. MineBox.Items.Add(fi.Name)
    16. Next
    17. If OSVersion1.ToString Like "Microsoft Windows NT 5.1" Then
    18. OSV = XP
    19. ElseIf OSVersion1.ToString Like "Microsoft Windows NT 6.1" Then
    20. OSV = Seven
    21. End If


    Funktioniert Tippe Toppe (n arbeitskollege ist grad gekommen der wusse wie ich das lösen könnte)

    Nur fällt mir grad auf, dass auf der Windows 7 Maschine das Fenster immer kleiner wird O.o (Für dieses Problem mach ich wohl noch n neuen Thread).
    #EDIT: AUTOSIZE => True
    AutoSizeMode => GrowOnly
    Auch dieses Problem ist gelöst =D


    Dankschön
    und einen schönen abend
    Frag doch die Version selbst ab und macht keine String-Arithmetik!

    VB.NET-Quellcode

    1. Dim v As Version = System.Environment.OSVersion.Version
    Bilder
    • OSVersion.jpg

      37,56 kB, 436×404, 122 mal angesehen
    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!
    Wieso gebt ihr ihm immer noch weitere Versions HinweisE?? Seht doch was er versucht und das über die Version zu machen ist mal völlig falsch.

    Du willst den Anwendungsdatne Ordner haben und den stellt das .NET FW bereit über die Environment.SpecialFolders, das sit was du brauchst und vergiss die Version.

    aivilon schrieb:

    Windows 8 ist mir momentan mal noch wurst. zu Vista komme ich evtl noch, da ich aber grad keine zur hand hab kann ich es da auch nicht testen.

    ok

    Warum hat Windows7 die Versionsnummer 6.1 und nicht 7.0?
    Weil faule, inkompetente, dumme Ars**löcher - aka "programmierer" ihre Versionsnummerabfragen FALSCH gemacht haben bzw falsch verwendet haben. DU willst doch sicher nicht zu DIESER Gruppe gehören oder ... ?
    Mach doch eine If Abfrage ob die Zahl höher als 5.1 ist bzw 5

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpression 'Keine Ahnung ob das Richitg geschrieben ist :D
    2. Public Function GetOsNUM() as String
    3. Dim Matches as MatchCollection = RegEx.Matches(OsVersion1,"Microsoft Windows NT (.*?)")
    4. For each Match as Match in Matches
    5. return Match.Groups(1).Value
    6. Next
    7. return "FAP"
    8. End Function
    9. Dim Num as Double = CDBL(GetOsNUM)
    10. if Num > 5.1 then
    11. 'Höher als Windows XP
    12. else
    13. 'Windows XP und darunter
    14. end if