Отчет GetVersionEx 12.2.18763 в Windows 10 1903 - PullRequest
0 голосов
/ 25 июня 2019

Используя W in32 API GetVersion / GetVersionEx и после добавления манифеста совместимости, Windows сообщает о себе как 12.2.18763 .

Общеизвестно, что приложения Win32в Windows 10 требуется манифест совместимости, чтобы получить актуальную версию ОС.Без него они получают только 8.2.10200 (что я могу воспроизвести здесь).

Но как только я добавлю манифест, Windows сообщит о себе как 12.2.18763 .Конечно, я на самом деле не Windows 12, а Windows 10 1809 x64.

Манифест совместимости, скопированный из другого ответа StackOverflow:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <!-- Windows Vista -->
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
    <!-- Windows 7 -->
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    <!-- Windows 8 -->
    <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!-- Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    <!-- Windows 10 -->
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
  </application>
</compatibility>

Код, скопированный со страницы MSDN GetVersionEx ():

#include <windows.h>
#include <stdio.h>

void main()
{
    OSVERSIONINFOEX osvi;
    BOOL bIsWindowsXPorLater;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

    GetVersionEx((OSVERSIONINFO*)&osvi);

    printf("Version is %d.%d (%d)\n",
        osvi.dwMajorVersion,
        osvi.dwMinorVersion,
        osvi.dwBuildNumber);
}

Я ожидаю 10.0.17763 , а 12.2.18763 слишком близко, чтобы быть общей ошибкой (+ 2, +2, +1000). Я искал отдельные номера, но не нашел подсказки.

Другой распространенный ответ - совместимость прокладок, но я не ожидал, что они обновятся версия для Windows.Я не мог их испортить, потому что в этой системе не установлен диспетчер совместимости приложений.

Есть идеи?

1 Ответ

0 голосов
/ 25 июня 2019

Это действительно прокладка, но из Application Verifier.Я должен был оставить флажок HighVersionLie , когда я тестировал приложение ранее.

...