11

Win8.1 und Win8 hat die gleiche OS-Version. Wie können wir überprüfen, ob das aktuelle Betriebssystem Win8 oder Blue ist? Die Environment.OSVersion wird uns die gleichen Ergebnisse geben:Wie können wir überprüfen, ob das aktuelle Betriebssystem win8 oder blau ist

Environment.OSVersion 6.2.9200.0 Environment.OSVersion.Version 6.2.9200.0 Environment.OSVersion.Version.Major 6 Environment.OSVersion.Version.Minor 2

+0

Es ist ein Pre-Release. Dinge wie OSVersion können sich ändern ... – Offler

+2

Überprüfen Sie 'Environment.OSVersion.Version.Revision'. Es sollte 9200 für Win8 und 9431 für die Win8.1-Vorschau sein. – dlev

+0

das ist seltsam! meine win8.1 Pro Vorschau –

Antwort

19

Windows-8.1 wird lie to you und Ihnen sagen, es ist Window 8 geändert wird, Sie müssen das Manifest bearbeiten, das in Ihr Programm eingebettet ist, damit Windows weiß, dass Sie nicht belogen werden wollen. Projekt + Neues Element hinzufügen, wählen Sie die Vorlage für die Anwendungsmanifestdatei aus. Kopieren Sie fügen Sie diesen Wortschwall unter dem <application> Element:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
     <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 
    </application> 
</compatibility> 
+0

genau das, was ich versuchte zu finden, danke –

+0

Wunsch, ich könnte geben 7 Upvotes – yano

2

fand ich eine Lösung im Rahmen dieses Registrierungsschlüssels

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 
0

Da ich nicht in der Lage zu bekommen war Hans-Lösung arbeiten, habe ich eine andere Lösung:

bool _IsWindows8Point1OrGreater = Type.GetType("Windows.UI.Xaml.Controls.Flyout, Windows.UI.Xaml, ContentType=WindowsRuntime", false) != null; 
+0

Nur auf Win8 und 8.1 getestet, beide zurück false. – fishmong3r

+1

Danke für die Abstimmung nach 7 Monaten. Ich habe gerade auf Windows 8.1 und Windows Phone 8.1 getestet, beide sind wahr. Was jetzt? Der "Runtime" -Teil könnte erwähnenswert sein: Die Lösung ist für RT. –

0

Bei Win8.1 die Version 6.3 ist. *

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx

Wenn Sie GetVersionEx() api [von kernel32.dll] für das erhalten Win8.1 Version verwenden, wird der Wert re gedreht wird 6.2 sein. * während der Versionswert 6.3 sein sollte. *

Die Lösung hierfür ist entweder Sie Assembly-Manifest zu die .net exe oder os.dll hinzufügen müssen, dass symhelp zu erklären, auf Windows laufen 8.1 , , die die .net System.Environment.OSVersion.Version-Funktion korrekt ausführen.

Allerdings müssen Sie es auf mehreren Betriebssystemen testen.

http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx