#post-id: 7180-04-47
#original-date: 23.03.2020 Mon
#original-time: 4:47 AM
#original-day: 7180
#original-host: WinXP Home SP3 (Build 2600)
Недавно решила тряхнуть стариной. Например, запустить VB3 под Windows 3.11.
читать дальше
Заодно потестила верисю Version Info Test для Win16. Оказалось, что, действительно, GetVersion() в Windows 3.11 сообщает программам, что они запущены в Windows 3.10 (это заметно на скриншоте), поэтому нужно делать дополнительную проверку. Тоесть эта фигня с GetVersionEx() в Windows 8.1 и выше – это не какая-то инновация, а старая песня о главном.

/* Кстати, программа прекрасно определяет Windows 9x и Windows NT. Тоесть строчка про платформу и разрядность системы – не для виду. */
А тут можно глянуть на Version Info Test для Win32, запущенную под Windows 98 SE. В принципе, она ничем не отличается от Win16 версии за исключением вывода GetVersionInfoEx().

А эту версию я написала на FreeBasic (та была на VC++ 6). Заодно добавила определение разрядности системы – эта фишка и ушла в Win16 версию программы.

А тут у нас Win16 версия программы под Windows 98 SE. Легко заметить, что Win16 программе, чтобы не смущать оную, сообщается третья версия системы, а не четвёртая.

Этот скриншот ничем не отличается от предыдущего, просто там программа была скомпилирована в VB1, а тут – в VB3. Кое-что пришлось переписать – языки всё же малость отличаются, некоторые вещи в третьей версии уже можно было не велосипедить ^^

А это чуть более новая версия программы, написанная на FreeBasic. Отличительной особенностью стало то, что она показывает вывод функции RtlGetVersion(), которая работает так же, как GetVersionEx(), только в Windows 8.1 и выше показывает актуальную версию без всяких манифестов. Странно она выглядит потому что запущена под Вайном, который не очень умеет в шрифты, а заодно не эмулирует баг ANSI версии функции MessageBoxIndirect(), в результате чего вместо иконки у нас пустота.

Собственно, вот так выглядит то, о чём я говорила. Программа запущена под Windows Server 2012 R2, но думает, что запущена под Windows Server 2012. Только RtlGetVersion() выдаёт правильную версию. /* На название операционной системы не смотрим – библиотека содержит глюк, а у меня руки не доходят всё переписать. */
#upd(27.03.2020 - 12:28 AM): читать дальшеНесколько новых скриншотов! Для начала, старая и новая версия программы запущены в Нанами.


То же самое, но в Windows 98 SE. В новой версии можно заметить корректную обрабоку ситуации, когда функции RtlGetVersion() нет в системе в принципе.
