![]() |
Windows 7 Product Key
Hallo Delphianer,
meine Frage richtet sich auf das im Threadnamen stehende Thema. Ich versuchte erfolglos die Binary Werte des Registry Eintrags 'DigitalProductId' bzw. 'DigitalProductId64' durch folgenden Code auszulesen:
Delphi-Quellcode:
Hoffe ihr könnt mir helfen,
function GetWindowsRegistryValuesA: string;
var Reg: TRegistry; i: Integer; begin Reg := TRegistry.Create(KEY_READ); try Reg.RootKey := HKEY_LOCAL_MACHINE; if (Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion\')) then begin try { Bemerkung: Ich überprüfe mit ValueExists die Existenz der Werte. Mit KeyExists hab ichs auch versucht. Es klappt eigentlich bei jedem Wert, nur nicht bei den zwei besagten. } { Beispiel Code einer Erfolgreichen Operation: } // Check and Read BuildGUID if Reg.ValueExists('BuildGUID') then Result := Result + #13#10 + 'BuildGUID: ' + Reg.ReadString('BuildGUID'); { Die nächsten 2 Operationen geben nichts zurück, sprich Result wird nicht erweitert. } // Check and Read DigitalProductId if Reg.ValueExists('DigitalProductId') then Result := Result + 'existiert'; // Check and Read DigitalProductId4 if Reg.ValueExists('DigitalProductId64') then Result := Result + 'existiert'; // usw. finally Reg.CloseKey; end; end; finally Reg.Free; end; end; Mfg DArc |
AW: Windows 7 Product Key
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir existieren die auch nicht. Siehe hier:
Anhang 35953 Nur im 64-Bit Zweig gibt es die bei mir, aber auf den greifst du ja nicht zu. |
AW: Windows 7 Product Key
Schade, also ich kannte ja bisher die Methode per Registry den Key auszulesen ...
Gibt es da ne andere Möglichkeit? Wäre über ein Tipp sehr erfreut. Mfg DArc |
AW: Windows 7 Product Key
Du musst als Zugriffsflag KEY_WOW64_64KEY, also $0100, übergeben, damit du aus dem 64-Bit Zweig liest. Das hätte Google dir aber auch gesagt. :angel:
|
AW: Windows 7 Product Key
das hab ich auch schon mal versucht gehabt (infos hatte ich von
![]() ich habe also
Delphi-Quellcode:
verwendet, jedoch kein unterschied :(
Reg := TRegistry.Create(KEY_READ or $0100);
|
AW: Windows 7 Product Key
Du benutzt OpenKeyReadOnly. Damit setzt du die Zugriffsflags zurück. Damit geht das nicht. ;-)
|
AW: Windows 7 Product Key
Tut mir leid, bin grad etwas neben mir, vorallem weil es nicht so funktionieren mag wie ich es wünsche :D
Delphi-Quellcode:
Kann jemand versuchen das mal bei sich auszutesten?
function GetWindowsRegistryValuesA: string;
var Reg: TRegistry; begin Reg := TRegistry.Create(KEY_READ or $0100); try Reg.RootKey := HKEY_LOCAL_MACHINE; if (Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\', false)) then begin try if Reg.KeyExists('DigitalProductId') then Result := Result + 'existiert'; if Reg.ValueExists('DigitalProductId64') then Result := Result + 'existiert'; finally Reg.CloseKey; end; end; finally Reg.Free; end; end; Oder hat jemand schon den Fehler gefunden? :D Mfg DArc |
AW: Windows 7 Product Key
Funktioniert problemlos. Nur dass du beim ersten if aus Versehen KeyExists statt ValueExists drin hast und beim zweiten DigitalProductId64 statt DigitalProductId4...
Wenn ich beides korrigiere, klappt es auch. // EDIT: Übrigens geht in aktuellen Delphiversionen auch OpenKeyReadOnly, das war nur in deinem alten Delphi 7 noch ein bekannter Bug. ;-) |
AW: Windows 7 Product Key
och ich dummerchen, solche fehler sind echt nervig :D
danke, ihr seid die besten! :thumb: Mfg DArc €dit: Zitat:
P.S.: Thread kann geclosed werden, da mein Problem nicht mehr unter uns weilt. :D |
AW: Windows 7 Product Key
Zitat:
Gibt es Methoden den 'Bug' in Delphi Versionen >= D7 wegzukriegen um doch noch OpenKeyReadOnly zu verwenden. KeyRead in HK_LocalMachine benötigt Administratorenrechte wenn man nur OpenKey verwendet. Mit OpenKeyReadOnly würde es ohne Admin Rechte funktionieren. MfG - Netpilots |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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-2025 by Thomas Breitkreuz