[C++]Vista erkennen

Google

Stammgast
Ich habe mein Programm speziell auf Windows Vista ausgerichtet. Deshalb möchte ich den User bei der Installation warnen, wenn er kein Vista verwendet. Wie kann ich herausfinden ob der User Vista verwendet? Die anderen Windows Versionen sind mir egal, es soll nur auf vista prüfen. Ich programmiere mit dem Borland C++ Builder.

Danke
 
A

abu

Guest
Und womit installierst du denn? Der Windows-Installer z.B. setzt das Property VersionNT auf 501 für WinXP. Den Wert für Vista kenne ich nicht. MSDN ist dein Freund.

Es gibt noch weitere Properties, welche von Interesse sein könnten: WindowsBuild und ServicePackLevel.
 

pagefault

Inaktiv
Ich habe mein Programm speziell auf Windows Vista ausgerichtet.
Du könntest die Information aus dem Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
verwenden.

Dort sind verschiedene Infos über die installierte Windows Version abrufbar, wie z.B. die numerische Windows Version im Schlüssel CurrentVersion und in ProductName sogar der Produktname im Klartext.

2000 SP4: 5.0 / Microsoft Windows 2000
XP SP2: 5.1 / Microsoft Windows XP
Vista Business: 6.0 / Windows Vista (TM) Business

Alle Infos von deutschen Windowsversionen. Ich denke, CurrentVersion ist ziemlich sicher, da die Ziffern auch auf fremdsprachigen Windows-Versionen gleich sind.

Als unternehmerisch denkender Entwickler könntest du dir aber noch folgendes überlegen:
Falls dein Programm auch auf XP laufen würde, würdest du mit dem "Vista-only" Check derzeit etwa 70% bis 80% der aktiven Windows Benutzer aussperren. - Damit würdest du deinen Markt selber einschränken.
 
A

abu

Guest
Falls dein Programm auch auf XP laufen würde, würdest du mit dem "Vista-only" Check derzeit etwa 70% bis 80% der aktiven Windows Benutzer aussperren. - Damit würdest du deinen Markt selber einschränken.

Das war auch mein erster Gedanke. Aber er will nur warnen, und das finde ich soweit OK.
 

Google

Stammgast
Ja ich will den Benutzer nur informieren, dass bestimmte Grafische Elemente nur mit Vista funktionieren.

danke für die antworten.
Soviel ich weiss ist vista Windows NT6?
 

Google

Stammgast
Ok habs hingekriegt. Hier mein Code: mit den variablen verNr und verName kann ich dann weiterarbeiten. Vielen Dank für die Infos.

Code:
TRegistry *version = new TRegistry(KEY_READ);
version->RootKey = HKEY_LOCAL_MACHINE;
version->OpenKey("\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", false);
String verNr = version->ReadString("CurrentVersion");
String verName = version->ReadString("ProductName");
delete(version);
 
Zuletzt bearbeitet von einem Moderator:
A

abu

Guest
Verständnisfrage

Du machst das nun aber beim Programmstart, oder? In deinem ersten Post schriebst du aber , dass du den Test bei der Installation machen möchtest. Was den nun?
 

Google

Stammgast
Ich programmiere den Installer auch selbst. Die Windows-Version wird beim Start des Installers ausgelesen, nicht beim Start der eigentlichen Anwendung. Jedenfalls funktioniert es genau so wie ich es mir vorgestellt habe. Danke nochmals für den Tipp mit der Registry.

gruss
 
A

abu

Guest
Immer gern. Allerdings kam der Tipp mit der Registry kam von pagefault.

Ich habe auch schon selbst Installer geschrieben, nur sehr einfache. Wenn es ans "Eingemachte" geht, verwende ich Installshield.
 
Oben