Entwickler-Ecke

Windows API - Unterscheiden zwischen Vista und W2K8


stiftmaster - Do 31.07.08 19:57
Titel: Unterscheiden zwischen Vista und W2K8
Hallo,

mein Programm muss beim Start wissen, auf welchem Betreibssystem es läuft. Dafür habe ich bisher folgende drei Werte ausgelesen:


Delphi-Quelltext
1:
2:
3:
  Label1.Caption := IntToStr(Win32Platform);
  Label2.Caption := IntToStr(Win32MajorVersion);
  Label3.Caption := Win32CSDVersion;


Damit konnte ich bisher alle Versionen unterscheiden. Jetzt habe ich allerdings das Problem mit Windows Vista (SP1) und Windows Server 2008 (SP1). Für beide Versionen kommen hier die gleichen Werte raus:
2
6
Service Pack1

Stellt sich für mich jetzt die Frage: Wie unterscheide ich zwischen den beiden Betriebssystemen.

Vielen Dank für eure Hilfe

Stefan


bis11 - Do 31.07.08 21:09

Suche im MSDN GETPRODUCTINFO sollte Dir dabei helfen.


Timosch - Fr 01.08.08 09:14

Du fragst Platform und MajorVersion ab. Gibt es nicht noch MinorVersion?


Fabian E. - Fr 01.08.08 11:14

http://www.delphi-treff.de/tipps/system/tipp/121/

Das kannst du ja aoch erweitern. Musst halt noch die Zahlen rausfinden.


stiftmaster - So 07.09.08 12:07

Hi,

leider kamen mal wieder ein paar andere Sachen dazwischen und daher kann ich erst jetzt hier antworten...

http://www.delphi-treff.de/tipps/system/tipp/121/
=> genau das mache ich auch. Allerdings sind die Werte für Vista+SP1 und W2K8+SP1 gleich. Dies ist meiner Forschung nach auch korrekt, da beide Versionen auf dem absolut identischen Kernel aufbauen. Aus diesem Grund gibt es auch kein W2K8 ohne SP, da MS auch durch die Namensgebung deutlich machen möchte, dass dies der gleiche Kernel ist.

MajorVersion
=> diese habe ich auch schon abgefragt, aber wie oben beschrieben ist dieser Wert immer 0. Nach obiger Erklärung macht dies dann auch Sinn, dass die Werte gleich sind.

GETPRODUCTINFO
Daran kämpfe ich noch. Hab da zwar schon einiges gefunden, aber nichts, was mich wirklich weiter bringt. Meine Überlegung geht momentan dahin nach dem Produkt-String zu suchen (wie immer man den auch rausbekommt) und dann zu schauen, ob dort Vista oder 2008 drin steht.

Nochmals vielen Dank für eure Hilfe. Sobald ich was Neues in Erfahrung gebracht habe, werde ich mich melden.

Bis dahin

Stefan


Andreas L. - So 07.09.08 12:44

WindowsVersionInfo ( http://www.delphipraxis.net/topic116695_kompo+twindowsversionsinfo+kompo+zur+windowserkennung.html&highlight=windowsversioninfo ) erkennt Win2008. Vllt. kannst du dir da was abschauen.