Manifest ist gar nicht nötig. Dieser Aufruf:
Delphi-Quellcode:
type
TRTLOSVersioninfoExW = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of WIDECHAR;
wServicePackMajor: WORD;
wServicePackMinor: WORD;
wSuiteMask: WORD;
wProductType: BYTE;
wReserved: BYTE;
end;
function RTLGetVersion(out RtlOsVer: TRTLOSVersioninfoExW): boolean;
var
po : TFarProc;
hKernelLib: THandle;
GetRTLVEX : function(var vex: TRTLOSVersioninfoExW): DWORD; stdcall;
begin
result := false;
ZeroMemory(@RtlOsVer, sizeof(RtlOsVer));
RtlOsVer.dwOSVersionInfoSize := sizeof(TRTLOSVersioninfoExW);
hKernelLib := LoadLibrary('ntdll');
if hKernelLib > 0 then
try
po := GetProcAddress(hKernelLib, 'RtlGetVersion');
if po <> nil then begin
@GetRTLVEX := po;
GetRTLVEX(RtlOsVer);
result := true;
end;
finally
FreeLibrary(hKernelLib);
end
end;
funktioniert auch ohne Manifest.