AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Version

Ein Thema von codenoob · begonnen am 16. Apr 2016 · letzter Beitrag vom 18. Apr 2016
Antwort Antwort
Seite 1 von 2  1 2      
codenoob
(Gast)

n/a Beiträge
 
#1

Windows Version

  Alt 16. Apr 2016, 23:53
Hi Delphianer

Ich versuche die Windows Version aus der Registry auszulesen.

Delphi-Quellcode:
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;
Ich habe hier Windows 7 Ultimate und so steht es auch bei mir in der Registry drinn.
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
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: Windows Version

  Alt 17. Apr 2016, 00:05
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 Delphi-Referenz durchsuchenTRegistry.OpenKeyReadOnly oder setzt das Flag KEY_READ beim Erzeugen der Instanz in Delphi-Referenz durchsuchenTRegistry.Create.

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
  Mit Zitat antworten Zitat
codenoob
(Gast)

n/a Beiträge
 
#3

AW: Windows Version

  Alt 17. Apr 2016, 00:18
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?

Geändert von codenoob (17. Apr 2016 um 00:20 Uhr)
  Mit Zitat antworten Zitat
386sx
(Gast)

n/a Beiträge
 
#4

AW: Windows Version

  Alt 17. Apr 2016, 00:29
http://www.delphipraxis.net/186147-o...mitteln-3.html

Ab #27 wird's interessanter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Windows Version

  Alt 17. Apr 2016, 01:38
Davon abgesehen öffnest du mit dem Code den Registry-Schlüssel schreibend, was ohne Adminrechte fehlschlagen wird.
Und damit wird das ganze im XP Kompatibilitätsmodus ausgeführt und du bekommst "Windows XP" zurück. Stimmt also wahrscheinlich alles.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
codenoob
(Gast)

n/a Beiträge
 
#6

AW: Windows Version

  Alt 17. Apr 2016, 01:52
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.


http://home.datacomm.ch/masterx/Form mit Manifest.rar

Geändert von codenoob (17. Apr 2016 um 02:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Windows Version

  Alt 17. Apr 2016, 02:25
Warum öffnest du den Schlüssel nicht einfach READ_ONLY?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
codenoob
(Gast)

n/a Beiträge
 
#8

AW: Windows Version

  Alt 17. Apr 2016, 02:31
@Luckye

Du meinst
Reg.Open('\SOFTWARE\Microsoft\Windows\CurrentVersion', false); in

Reg.OpenKeyREADONLY('\SOFTWARE\Microsoft\Windows\CurrentVersion'); das verändert nichts bekomme als Wert Windows XP zurück.
  Mit Zitat antworten Zitat
codenoob
(Gast)

n/a Beiträge
 
#9

AW: Windows Version

  Alt 17. Apr 2016, 03:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Windows Version

  Alt 17. Apr 2016, 13:16
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 korrektem Manifest), siehst du hier:

ossupport.png

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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz