Цитата Uil (
)
Так может в лоб определять версию с помощью RtlGetNtVersionNumbers(MajorVersion, MinorVersion, BuildNumber)?
Недокументированная функция? Такую использовать стремно, учитывая что существует бессрочная бета в виде Windows 10. "Крутые паСаны" из мелкософт даже документированные версии аннигилируют (пример GetVersion , GetVersionEX) , а что уж говорить про эту?
Пока что из документированных , работает этот вариант (по крайней мере на windows 7 и windows 10):
Код
#Include "window9.bi"
#inclib "ntdll"
#ifndef RtlGetVersion
declare function RtlGetVersion stdcall alias "RtlGetVersion" (byval lpVersionInformation as OSVERSIONINFOW ptr) as integer
#endif
dim as OSVERSIONINFOW vi
vi.dwOSVersionInfoSize = sizeof(vi)
RtlGetVersion(@vi)
? vi.dwMajorVersion , vi.dwMinorVersion , vi.dwBuildNumber
sleep
Но вот только надолго ли?
Так же есть вариант обратиться к реестру . Вроде путь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion на всех версиях винды неизменен.
В моем случае, да это поможет, но вся фигня в том , что куча заголовков зависит от макроса _WIN32_WINNT.
--------------------------------
SARG объяснил почему на версии 1.05 проблемы с отладчиком. Судя по всему это из-за того, что исполняемый код находится в файле "bi" . В версии 1.06 это исправлено. А вот GDB пофиг где и что находится, он работает.