AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) CommandLines der Prozesse unter Windows 64 Bit ermitteln?

CommandLines der Prozesse unter Windows 64 Bit ermitteln?

Ein Thema von Delphi-Laie · begonnen am 5. Sep 2014 · letzter Beitrag vom 16. Sep 2014
Antwort Antwort
Seite 3 von 4     123 4   
Delphi-Laie

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 15. Sep 2014, 13:11
Allmählich scheint es so, als müßte wegen Überforderung ich aussteigen.

Sebastian, danke für die plausible Erklärung! Allerdings wundert es mich, daß im Delphi-Proramm CPU64-Compilierungsoptionen vorhanden waren. Welchen Sinn haben die, wenn kein 64-Bit-Windows vorgesehen ist? Die 64 Bit des Zentralprozessors sind doch außerdem für die Katz', wenn nur 32-Bit-Windows verwendet wird!

Wie gesagt, ich lasse jetzt lieber die Finger von PEB & Co., es gibt ja noch die andere Möglichkeit, die Kommandozeilen abzufragen.

Noch was zu komprimierten/gepackten oder unkomprimierten/ungepackten Records. Die Delphi-Hilfe suggeriert, daß dieses Schlüsselwort überflüssig, aber auch nicht schädlich sei, weil die Records ohnehin intern gepackt würden. Bei den weiter oben in dieser Diskussion aufgeführten Funktionen macht es aber sehr wohl einen Unterschied, ob man das "packed" verwendet oder wegläßt, wie ich durch die üblichen Experimente herausfand.

Zacherl, danke für Dein ausführliches Beispiel, das ich recht bald ausprobieren werde!

Geändert von Delphi-Laie (15. Sep 2014 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.420 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 15. Sep 2014, 15:04
Sebastian, danke für die plausible Erklärung! Allerdings wundert es mich, daß im Delphi-Proramm CPU64-Compilierungsoptionen vorhanden waren. Welchen Sinn haben die, wenn kein 64-Bit-Windows vorgesehen ist?
Die sollten verwendet werden, wenn ein 64-Bit Compiler verwendet wird. Welche du konkret meinst, sehe ich gerade nicht.

Die 64 Bit des Zentralprozessors sind doch außerdem für die Katz', wenn nur 32-Bit-Windows verwendet wird!
Es gibt aber kaum noch neue 32-Bit CPUs.

Noch was zu komprimierten/gepackten oder unkomprimierten/ungepackten Records. Die Delphi-Hilfe suggeriert, daß dieses Schlüsselwort überflüssig, aber auch nicht schädlich sei, weil die Records ohnehin intern gepackt würden.
Das verstehe ich aber deutlich anders:
http://docwiki.embarcadero.com/RADSt...turierte_Typen
Zitat:
Die Verwendung von packed wird nicht empfohlen, da es die Kompatibilität mit anderen Sprachen oder Plattformen verhindern kann, den Datenzugriff verlangsamt und sich bei Zeichen-Arrays auf die Typkompatibilität auswirkt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 15. Sep 2014, 15:30
Zacherl, danke für Dein ausführliches Beispiel, das ich recht bald ausprobieren werde!
Funktioniert sowohl mit 32, als auch mit 64 Bit Prozessen. Wobei dein eigener Prozess ebenfalls ein 32 oder 64 Bit Kompilat sein kann. Müsste man lediglich noch modifizieren, wenn man es auf einem nicht-64-bit System starten will, welches die IsWow64Process API nicht kennt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 15. Sep 2014, 20:54
Zacherl, danke, ich bleibe dran, nur heute probiere ich es nicht mehr aus.

Sebastian, mal eben die Hilfe von Delphi 2.0 zu packed befragt:

"Das reservierte Wort packed gibt dem Compiler in einer strukturierten Typdeklaration an, daß die Datenspeicherung, selbst auf Kosten eines langsameren Zugriffs auf eine Komponente einer Variable dieses Typs, komprimiert werden soll.
Es hat jedoch in Delphi keine Auswirkung, weil das Packen der Daten automatisch erfolgt."

Zugegeben, die Hilfen in Delphi 3 und 4 (mehr habe ich jetzt nicht zur Hand) schreiben beide schon wieder etwas anderes, aber nichts gegensätzliches.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.420 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 15. Sep 2014, 21:44
Sebastian, mal eben die Hilfe von Delphi 2.0 zu packed befragt:
Die Hilfe hat sich seit damals eben wie Delphi selbst auch weiterentwickelt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 16. Sep 2014, 13:13
Die Hilfe hat sich seit damals eben wie Delphi selbst auch weiterentwickelt.
Sicher, aber die von mir zitierten Sätze sind ja nicht zufällig in die Delphi-Hilfe gelangt.

Zacherl, ein ganz dickes Dankeschön! Erster Test auf 64 Bit mit einem XE2-Compilat, auch 64 Bit, und es funktioniert, welch ein Glückshormonausstoß! Werde ich in mein Programm "Prozesse" integrieren, das nunmehr auch als 64-Bit-Compilate die Spalte "Commandlines" auszufüllen imstande sein wird.
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 16. Sep 2014, 14:55
Noch als Ergänzung: Das 32-Bit-Compilat bricht schon bei seinem Start mit einer Fehlermeldung ab, soweit ich das überblicke, scheitert es mal wieder an der (statisch aufgerufenene) ntdll.dll, die die wow64-Funktionen nicht beinhaltet. Das ist jetzt aber nicht wichtig, denn wenn der 64-Bit-Strang funktioniert, ist das schon die entscheidende Hilfe und Problemlösung.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 16. Sep 2014, 15:21
Noch als Ergänzung: Das 32-Bit-Compilat bricht schon bei seinem Start mit einer Fehlermeldung ab, soweit ich das überblicke, scheitert es mal wieder an der (statisch aufgerufenene) ntdll.dll, die die wow64-Funktionen nicht beinhaltet.
Mhh das ist wirklich seltsam. Auf welcher Windows Version hast du das 32 Bit Kompilat denn getestet? Auf meinem Win8.1 64 Bit findet er die Imports ohne Probleme. "Theoretisch" sollte der Code auf allen 64 Bit Systemen lauffähig sein. Auf 32 Bit Plattformen wird im 32 Bit Kompilat die IsWow64Process API und die nativen Wow64 Imports fehlen.

Finde leider auch keine richtigen Infos darüber ab welcher Win Version die Wow64 APIs hinzugefügt wurden.

Edit: Da die APIs aber bereits in einem Blog Artikel von 2005 genannt werden, sollten sie ab Vista wohl vorhanden sein (natürlich nur bei der 64 Bit Version).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (16. Sep 2014 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 16. Sep 2014, 15:37
Windows 7 64 Bit.

War auch nur eine Vermutung meinerseits, woran es liegen könnte. Mit dynamischer DLL-Einbindung könnte man den Fehler wohl genauer eingrenzen.

Edit: Kommando zurück, die Fehlermeldung erfolgt nicht beim Start, sondern beim Aufrufen der Clickprozedur, und zwar mit einer Exzeption der Klasse EOSError mit er Meldung "Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen."

Ist wohl nicht wichtig.

Geändert von Delphi-Laie (16. Sep 2014 um 15:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: CommandLines der Prozesse unter Windows 64 Bit ermitteln?

  Alt 16. Sep 2014, 15:42
Puh unter einem 64 Bit OS sollte das definitiv nicht passieren. Kannst ja mal einfach testweise ein delayed hinter die Imports der nativen Wow64 APIs schreiben und zusätzlich den ganzen Teil der im {$IFDEF WIN32} Block der Funktion steht mit einem if Is64BitOS then absichern.

Die Is64BitOS Funktion findest du hier:
http://stackoverflow.com/a/1634007/3140346
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf