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
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
Online

Registriert seit: 9. Apr 2006
1.683 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
Antwort Antwort


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 02:27 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