Prinzipiell könnte man auch die undokumentierte
API RtlGetNtVersionNumbers benutzen. Frag mich aber bitte nicht wies da mit Kompatibilitätsproblemen aussieht

.
procedure RtlGetNtVersionNumbers(var dwMajorVersion : DWORD; var dwMinorVersion : DWORD; UnknownButShouldBeNull : Pointer); stdcall; external 'ntdll.dll';
Bei einem kurzen Test unter Windows 7 wurde weiterhin 6.1 ausgespuckt statt 5.1 wenn die Anwendung im XP Kompatibilitätsmodus gestartet wurde.