Подтвердить что ты не робот

Как мы можем проверить, является ли текущая ОС 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

4b9b3361

Ответ 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