AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie kann ich eine 64bit-Anwendung erkennen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich eine 64bit-Anwendung erkennen?

Ein Thema von ringli · begonnen am 20. Okt 2007 · letzter Beitrag vom 20. Okt 2007
Antwort Antwort
ringli

Registriert seit: 7. Okt 2004
508 Beiträge
 
Delphi 11 Alexandria
 
#1

Wie kann ich eine 64bit-Anwendung erkennen?

  Alt 20. Okt 2007, 17:16
Gibt es eigentlich eine Möglichkeit eine 64bit-Anwendung zu erkennen? Ich stelle mir da so was in der Richtung wie
if Is64bitApp('test.exe') then showmessage('64bit-Anwendung'); vor.

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 Registry: WOW6432NODE in der Codelib habe ich gefunden, aber der hilft mir ja nicht beim Erkennen einer 64bit-Anwendung.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: Wie kann ich eine 64bit-Anwendung erkennen?

  Alt 20. Okt 2007, 18:22
Zitat von ringli:
Gibt es eigentlich eine Möglichkeit eine 64bit-Anwendung zu erkennen? Ich stelle mir da so was in der Richtung wie
if Is64bitApp('test.exe') then showmessage('64bit-Anwendung'); vor.

...
Hallo,

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
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
508 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Wie kann ich eine 64bit-Anwendung erkennen?

  Alt 20. Okt 2007, 19:33
Danke für deine Antwort.

Ich habe mir jetzt auf Basis von ErazerZ's Portable Executable File Unit die folgende Funktion erstellt:
Delphi-Quellcode:
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;
Für meinen Anwendungsfall funktioniert es so jedenfalls.
  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 05:24 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