![]() |
Wie kann ich eine 64bit-Anwendung erkennen?
Gibt es eigentlich eine Möglichkeit eine 64bit-Anwendung zu erkennen? Ich stelle mir da so was in der Richtung wie
Delphi-Quellcode:
vor.
if Is64bitApp('test.exe') then showmessage('64bit-Anwendung');
Hintergrund der Frage ist der das ich von einer fremden Anwendung die Registrierungsdaten sichern/wiederherstellen möchte. Diese Anwendung gibt es sowohl als 32bit- als auch als 64bit-Version. Wenn jetzt die 32bit-Version unter einem 64bit-Windows ausgeführt wird, muss ich den Registry-Pfad "HKLM\Software\WOW6432Node\..." sichern. Und wenn die 64bit-Version der Anwendung ausgeführt wird, muss ich entsprechend den Registry-Pfad "HKLM\Software\..." sichern. Den Beitrag ![]() |
Re: Wie kann ich eine 64bit-Anwendung erkennen?
Zitat:
es gibt im PE/COFF-Format für jeden Code-Abschnitt ein "Machine Field", dort steht 0x14c für 386 und 0x8664 für x64. Am besten besorgst du dir die PE/COFF-Doc (pecoffv8.doc) von MS. Die Sache ist nicht ganz so einfach, weil: es können viele Programm-"Dateien" in einer PE-Datei enthalten sein, die müssen nicht alle für die gleiche CPU sein. Ausserdem können auch Programme aus maschinenunabhängigem Code bestehen (DLL,.NET). Gruss Reinhard |
Re: Wie kann ich eine 64bit-Anwendung erkennen?
Danke für deine Antwort. :)
Ich habe mir jetzt auf Basis von ![]()
Delphi-Quellcode:
Für meinen Anwendungsfall funktioniert es so jedenfalls. :)
function Is64bitPE(FileName : String) : Boolean;
const x64 = $8664; var PE : TPeFile; begin Result := False; PE := TPeFile.Create; try if PE.LoadFromFile(FileName) then begin if PE.ImageNtHeaders.FileHeader.Machine = x64 then begin Result := True; end; end; finally PE.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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