Как мы можем проверить, является ли текущая ОС win8 или синей
Win8.1 и Win8 имеют ту же версию ОС. Как мы можем проверить, является ли текущая ОС Win8 или Blue?
Environment.OSVersion дает нам те же результаты:
Environment.OSVersion 6.2.9200.0
Environment.OSVersion.Version 6.2.9200.0
Environment.OSVersion.Version.Major 6
Environment.OSVersion.Version.Minor 2
Ответы
Ответ 1
Windows 8.1 будет лгать вам и сказать вам, что это окно 8. Изменение этой лжи требует редактирования манифеста, встроенного в вашу программу, поэтому что Windows знает, что вы не хотите, чтобы вас лгали. Project + Добавить новый элемент, выберите шаблон элемента манифеста приложения. Скопируйте эту справку под элементом <application>
:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
</application>
</compatibility>
Ответ 2
Я нашел решение под этим ключом реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Ответ 3
Так как я не смог получить решение от Hans, я создал другое решение:
bool _IsWindows8Point1OrGreater = Type.GetType("Windows.UI.Xaml.Controls.Flyout, Windows.UI.Xaml, ContentType=WindowsRuntime", false) != null;
Ответ 4
В случае Win8.1 версия 6.3. *
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
Если вы используете GetVersionEx() api [from kernel32.dll] для получения версии Win8.1, возвращаемое значение будет 6.2. * тогда как значение версии должно быть 6.3. *
Решение этого - либо вам нужно добавить манифест сборки,
.net exe или os.dll, чтобы указать, что symhelp будет работать в Windows 8.1,
что может привести к правильной работе .net System.Environment.OSVersion.Version.
Однако вам нужно протестировать его на нескольких ОС.
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