Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Registry-Schlüssel unter 64 Bit Windows nicht auslesbar? (https://www.delphipraxis.net/167788-registry-schluessel-unter-64-bit-windows-nicht-auslesbar.html)

devidespe 18. Apr 2012 11:38

Registry-Schlüssel unter 64 Bit Windows nicht auslesbar?
 
Ich habe eine Anwendung mit Admin-Rechten und möchte einen Registry-Stringschlüssel auslesen. Das funktioniert auch unter der 32 Bit-Version von Windows 7 mit folgendem Code ganz gut:

Delphi-Quellcode:
function GetWindowsGUID : string;
var CryptoGUID    : TRegistry;
    MachineGUIDStr : string;
begin
  Result:='';
  CryptoGUID:=TRegistry.Create;
  try
    CryptoGUID.RootKey:=HKEY_LOCAL_MACHINE;
    CryptoGUID.Access :=KEY_READ;
    if CryptoGUID.OpenKeyReadOnly('Software\Microsoft\Cryptography') then
    begin
      MachineGUIDStr:=CryptoGUID.ReadString('MachineGuid');
      Result:=Uppercase(MachineGUIDStr);
    end;
  finylly
    CryptoGUID.Free;
  end;
end;
Bei einer 64 Bit-Version von Windows 7 kommt ein Leerstring zurück, und die Hilfe sagt auch, dass dies der Fall ist, wenn der Schlüssel nicht existiert. In Regedit sehe ich aber, dass er existiert. Woran kann das liegen?

Bernhard Geyer 18. Apr 2012 11:41

AW: Registry-Schlüssel unter 64 Bit Windows nicht auslesbar?
 
Du musst das zugriffsflag KEY_WOW64_64KEY mit übergeben sonst sieht deine 32-Bit Anwendung den für sieh bestimmten 32-Bit Zweig.

devidespe 18. Apr 2012 11:45

AW: Registry-Schlüssel unter 64 Bit Windows nicht auslesbar?
 
Danke, das war die Lösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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