![]() |
Windows Version
Hi Delphianer
Ich versuche die Windows Version aus der Registry auszulesen.
Delphi-Quellcode:
Ich habe hier Windows 7 Ultimate und so steht es auch bei mir in der Registry drinn.
function GetOsName: string;
var VerInfo: TOsversionInfo; PlatformId, VersionNumber: string; Reg: TRegistry; begin VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo); GetVersionEx(VerInfo); Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False); PlatformId := Reg.ReadString('ProductName'); VersionNumber := Reg.ReadString('CurrentVersion'); Reg.Free; Result := PlatformId + ' (version ' + VersionNumber + ')'; end; Aber sobald ich den Code ausführe bekomme ich als Wert "Windows XP". Kennt jemand das Problem und kann mich da auf den Richtigen Weg führen. Grüsse Tom |
AW: Windows Version
64 Bit Windows und 32 Bit Delphi Kompilat? Dann schaut dein Programm im falschen Pfad nach, Stichwort WOW64 (es gibt in diesem Zusammenhang für die Registry einen speziellen Terminus, der mir gerade nicht einfällt). Hat dein Programm ein Manifest? Wenn nicht, wird dir das System unter Umständen ein anderes Windows vorgaukeln. Oder führst du deine Software im Kompatibitätsmodus aus?
Davon abgesehen öffnest du mit dem Code den Registry-Schlüssel schreibend, was ohne Adminrechte fehlschlagen wird. Entweder du nutzt ![]() ![]() Unabhängig davon gibt es genügend zuverlässige Funktionen zum Ermitteln der Windows-Version, die ohne Zugriff auf die Registry auskommen. Auch wenn man dort immer das Manifest beim Erscheinen neuer Windows-Versionen pflegen muss (aber oft ändert man sowieso alle paar Jahre was an der eigenen Software, so dass das nicht ins Gewicht fällt). MfG Dalai |
AW: Windows Version
Hi Dalai
Also du meinst das ganze wird umgeleitet und der sucht das aus dem HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Windows NT\CurrentVersion raus? Das Compilat inst 32 Bit und mein Windows 64. Hab mal wo was gelesen das es eirgendwie auch über die Kernel32 gehen soll? |
AW: Windows Version
|
AW: Windows Version
Zitat:
|
AW: Windows Version
Wie mach ich den das ganze mit nem Manifest?
Das ist total Neuland für mich. Hab das was mit nem Manifest versucht aber das funktioniert auch nicht. Hab mal meinen Code an nen Link gehängt. ![]() |
AW: Windows Version
Warum öffnest du den Schlüssel nicht einfach READ_ONLY?
|
AW: Windows Version
@Luckye
Du meinst
Delphi-Quellcode:
in
Reg.Open('\SOFTWARE\Microsoft\Windows\CurrentVersion', false);
Delphi-Quellcode:
das verändert nichts bekomme als Wert Windows XP zurück.
Reg.OpenKeyREADONLY('\SOFTWARE\Microsoft\Windows\CurrentVersion');
|
AW: Windows Version
Hab jetzt das ganze mal auf meinem 2. Rechner mit Windows 10 getestet und das ganze schaut also so aus.
Windows 10 Test --------------- Rückgabewert = Windows 10 (6.2) Windows 7 Test -------------- Rückgabewert = Windows XP (5.1) Also jetzt verstehe ich die Welt nicht mehr Wieso es bei Windows 10 geht und auf Windows 7 bekomme ich nen anderen Wert.:oops: |
AW: Windows Version
Liste der Anhänge anzeigen (Anzahl: 1)
Dein Manifest ist kein gültiges Manifest, sondern nur ein Teil eines Manifests. Dazu kommt, dass du in den Projektoptionen das Standardmanifest aktiviert hast, so dass das aus deiner Ressource ohnehin nicht verwendet wird. Beides alleine verhindert schon, dass das klappt.
Wenn du ein komplettes Manifest erstellst und in den Projektoptionen unter Anwendung als benutzerdefinierte Manifestdatei einbindest, klappt das auch. Ob das funktioniert, siehst du im Ressourcenmonitor von Windows, wenn du dort in der Prozessliste auf dem Reiter CPU die Spalte Betriebssystemkontext aktiviest. Wie das aussieht (links deine Exe, rechts die mit ![]() Anhang 45159 Das Manifest, das du unter dem Link findest, ist aber zwar gültig, enthält aber noch nicht die Windows Themes Sektion usw., so dass dein Programm wie unter Windows 98 aussieht. Das müsstest du da noch ergänzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz