Zitat von
Luzzifus:
Das funktioniert auch ganz gut, ausser unter Windows XP 64-Bit und Windows Vista. Es wird dann einfach 'cOsUnknown' zurückgegeben. Wie muss die Funktion erweitert werden, damit auch diese Betriebssysteme erfasst werden
Vista is intern ein 6.0-NT (XP war 5.1, Win2003Server 5.2).
D.h. eine erweiterung dieses case-konstrukts:
Delphi-Quellcode:
case osVerInfo.dwPlatformId of
// Windows NT/2000
VER_PLATFORM_WIN32_NT:
begin
if majorVer <= 4 then
Result := cOsWinNT
else if (majorVer = 5) and (minorVer = 0) then
Result := cOsWin2000
else if (majorVer = 5) and (minorVer = 1) then
Result := cOsXP
else if (majorVer = 6) then
Result := cOsVista
else
Result := cOsUnknown;
end;
natuerlich muss
TOSVersionInfo auch dementsprechend erweitert werden
Was die Architektur betrifft, sollte die EnvironmentVariable "PROCESSOR_ARCHITECTURE" gute Dienste leisten.
Ein Aufruf von
GetEnvironmentVariable mit dem Parameter gibt (als string!) bei einem 32-Bit-
OS x86 zurueck, und iirc x64 bei einem 64-Bit-System.
Allerdings: Angaben ohne Gewaehr
greetz
Mike