AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden?

Ein Thema von Delphi-Laie · begonnen am 25. Mai 2010 · letzter Beitrag vom 26. Mai 2010
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden?

  Alt 25. Mai 2010, 21:07
Hallo Delphifreunde!

Im Taskmanager meines 64-Bit-Windows (6.1) finden sich hinter den Namen der 32-Bit-Prozesse ein unscheinbares „*32“. Das ließ in mir folgende Frage aufkommen: Wie kann man 32-Bit-Programme und 64-Bit-Programme treffsicher voneinander unterscheiden?

Unter Windows mit 32-Bit ist das zumindest auf manuellem Wege einfach (was nicht starten kann bzw. was man nicht gestartet bekommt, hat zuviele Bits), aber umgekehrt, also in einem 64-Bit-Windows?!

Die Funktion „CreateToolhelp32Snapshot“ scheint jedenfalls zur Ermittlung der Bitanzahl/-breite nicht geeignet zu sein.

Weiß jemand, welchen Zaubertrickes sich der Taskmanager bedient, um das eine vom anderen zu unterscheiden?

Vielen Dank im voraus!

Delphi-Laie
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden

  Alt 25. Mai 2010, 21:26
Wenn du weißt um welchen Dateinamen es geht, einfach in den PE-Header schauen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden

  Alt 25. Mai 2010, 21:30
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden

  Alt 25. Mai 2010, 22:50
MSDN-Library durchsuchenIsWOW64Process wäre wohl die einfachste Lösung

Dabei ist ein der Prozess ein 64 bit Prozess, wenn:
(IsWOW64Process(GetCurrentProcess)) and (not IsWOW64Process(hTargetProcess)) Die erste Abfrage prüft, ob du überhaupt in einem 64 bit System bist (da dein Delphi Prozess sicher 32 bit ist, sofern du nicht mit Lazarus kompilierst) und die zweite Abfrage prüft, ob der Zielprozess NICHT im 32 Subsystem (WOW64) läuft.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: Wie 32-Bit-Programme von 64-Bit-Programmen unterscheiden

  Alt 26. Mai 2010, 12:29
Zitat von Zacherl:
(IsWOW64Process(GetCurrentProcess)) and (not IsWOW64Process(hTargetProcess)) Die erste Abfrage prüft, ob du überhaupt in einem 64 bit System bist (da dein Delphi Prozess sicher 32 bit ist, sofern du nicht mit Lazarus kompilierst) und die zweite Abfrage prüft, ob der Zielprozess NICHT im 32 Subsystem (WOW64) läuft.
Danke, aber ist es nicht umgekehrt? GetCurrentProcess ist doch der eigene Prozeß, während andererseits hTargetProcess die übergeordnete Ebene nahelegt?!

Edit: Ich ziehe diese meine Gegenfrage zurück, ich war wohl etwas irritiert.
  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 12:44 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