Welches OS
-
Hallo!
Ich versuche gerade eine meiner Anwendungen auf Linux zu portieren. Leider verwendet dieses Proramm an einer Stelle, die Win32 API. Da diese eine Methode aber nicht kritisch ist, kann man sie auch weglassen.
Da ich keine 2 Builds ausliefern will möchte ich gerene zum Zeitpunkt der Ausführung herausfinden ob die Methode aufgerufen werden soll oder nicht, d.h. ich möchte herausfinden ob das Programm gerade auf Windows oder einem anderen OS läuft. Wie stelle ich das an?Danke schon mal im Voraus.
-
Ich habe jetzt herausgefunden, dass es zwar die enum System.PlatformID gibt, jedoch hat diese erst ab .NET 2.0 einen Member Unix. Weiß jemand was ich da machen könnte?
-
wenn diese enum nur windows(oder auch andere) hat dann prüf doch ob die SystemID != windows ist und dann sollte eigentlich sicher sein das du unter unix bist.
gruß
stephan
-
Du könntest auch die einfach die string-represäntation der OS Version hernehmen.
using System; // ... public static bool IsUnixMachine() { return Environment.OSVersion.ToString().Contains("Unix"); }
-
Also SystemID habe ich eigentlich nur bei XML Klassen gefunden, welche SystemID meinst du genau <stephan>?
Das mit Environment.OsVersion funktioniert, jedoch ist es warscheinlich besser abzufragen ob "Win" in dem String vorkommt, da man sich ja nie sicher sein kann ob alle Unix Systeme auch Unix in den String hineinschreiben.
Danke für die Hile!
-
Vieleicht hilft dir das weiter:
http://www.microsoft.com/germany/msdn/library/net/vbnet/BetriebssystemerkennungMitVBNET.mspxDu muesstest nur testen welche (falls ueberhaupt) Parameter bei Unix/Linux/Mac
zurueckgegeben werden.EDIT:
scheint laut dem hier nicht zu funzen, sorry:
http://www.dotnet247.com/247reference/msgs/36/182424.aspx
-
Mono Documentation: System.Environment.OSVersion
Ich nahm aufgrund der Dokumentation an, dass immer Unix zurückgegeben wird.
-
Wunderbar, endlich kann ich ein Linux-Port Problem abhaken und die nächsten 20 im Bereich WinForms angehen :).
Danke nochmals