Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prozessname von 32Bit Applikation unter 64Bit Windows 7 (https://www.delphipraxis.net/161061-prozessname-von-32bit-applikation-unter-64bit-windows-7-a.html)

Ahlers 14. Jun 2011 21:21

Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Hallo,
ich habe schon seit langer Zeit ein Programm, besser einen Dienst, der die laufenden Prozesse ermittelt. Nun habe ich aber auf meinem PC Windows 7 mit 64 Bit. Und da findet mein Programm nur die Namen der 32 Bit Prozesse.
Ich benutze erst enumProcesses und bekomme dort die ID von allen (auch 64 Bit) Prozessen. Dann mache ich ein openProcess um dann mit GetModuleFileNameEx den Namen zu bekommen. Nun funktioniert openProcess aber für die 64 Bit Prozesse nicht mehr.
Es sieht so aus, als könne man das nur von einer 64 Bit Applikation aus machen. Ich habe aber nur ein 32Bit Delphi.
Kann ich doch irgendwie an die Exe-Namen aller laufenden Prozesse kommen?

Gruß
Erwin

haentschman 14. Jun 2011 21:26

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Erst mal ... Willkommen :dp:
Zitat:

Ich habe aber nur ein 32Bit Delphi.
das haben 99,9 % von uns auch... :zwinker:
Auch wenn ich es nicht genau weiß, denke ich, daß du mit deiner Vermutung Recht hast.

RWarnecke 14. Jun 2011 21:37

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Hallo und willkommen in der :dp:

in meinem Programm SystemInfo werden alle Prozessnamen, egal ob 64Bit oder 32Bit ausgelesen und angezeigt. Schaue Dir mal dazu MSDN-Library durchsuchenCreateToolhelp32Snapshot. Damit solltest Du wieterkommen.

Edit: Für den MSDN Beitrag ist noch die Unit TlHelp32 wichtig.

himitsu 14. Jun 2011 22:06

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
http://www.delphipraxis.net/160046-d...ermitteln.html
http://www.delphi-forum.de/viewtopic...=92373&start=0
und eventuell noch das hier
http://www.delphipraxis.net/160060-r...t-prozess.html

Lesen kann man ja nie genug, vorallem um auch die Hintergründe zu erfahren. :stupid:


PS: man glaubt garnicht, was so alles die bekannten Suchfunktionen ausspucken, wenn man sie dann mal nutzt :zwinker: > Google:
Delphi-Quellcode:
delphi "64 bit" prozesse auflisten

Ahlers 15. Jun 2011 22:19

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
CreateToolhelp32Snapshot liefert mir die Namen der Prozesse, auch der 64 Bit Prozesse. Allerdings hole ich mir bisher auch noch den Pfad zu der Exe und den User. Und das liefert mit CreateToolhelp32Snapshot nicht. Daher habe ich es damals schon verworfen.

Der andere Tip mit dem NtQueryInformationProcess hört sich recht vielversprechend an. Allerding muss dazu auch openProcess funktionieren. Und das schlägt bei mir schon fehl, sprich ich bekomme 0 als Handle zurück. Ich habe auch schon versucht, mir spezielle Rechte (SE_DEBUG_NAME) zu holen, hat aber auch keinen Erfolg.

Muss vielleicht doch noch mehr googlen. Oder mache ich etwas falsch, dass openProcess auch für die 64 Bit Prozesse funktionieren müßte?

Erwin

himitsu 15. Jun 2011 22:39

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Man kann sich eben nicht einfach Rechte holen, welche einem nicht zuerkannt wurden.
Man kann höchtens freigegebene Rechte "aktivieren".

Es wäre ja ein Sicherheitsloch, wenn man so einfach auf fremde Prozesse zugreifen dürfte. :zwinker:

Also wenn du nicht deinen Prozess mit ausreichend hohen Rechten startest, wird es etwas schwer werden.
Na gut, z.B. über das UAC könnte man sich auch nachträglich noch die Rechte erhöhen/freigeben lassen.

Ahlers 16. Jun 2011 07:15

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Ich bin davon ausgegangen, dass ich alle Rechte habe. Ich bin in der Administratorgruppe. Allerdings ist das ja bei Windows 7 mit dem UAC anders und ich habe die Rechte wahrscheinlich nicht automatisch. Allerdings habe ich keine Ahnung, wie ich mir die Rechte dann geben kann. Ich sollte mein Programm mal auf einem 32Bit Windows 7 probieren. Wenn es da klappt, liegt es an den 64Bit und nicht den Rechten.
Aber wie gesagt: bei mir funktioniert das openProcess schon nicht.

Erwin

Luckie 16. Jun 2011 08:07

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Zitat:

Zitat von Ahlers (Beitrag 1106648)
bei mir funktioniert das openProcess schon nicht.

Was heißt "funktioniert nicht"? Du hast doch eine Fehlerbehandlung, die wird dir doch dann zumindest den Grund sagen können, warum OpenProcess Fehlschlägt.

Ahlers 16. Jun 2011 12:41

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Das ist ein guter Tip wo ich auch selber hätte drauf kommen können.
Ich frage das Handle, welches ich von openProcess bekommen, nur auf <>0 ab. Daher sehe ich also, dass ich kein gültiges Handle bekommen. Im Fehlerfall sollte ich aber nocht getLastError aufrufen, um zu erfahren, was wirklich schief gegangen ist. Werde ich mal machen. Vielleicht weiß ich dann ja mehr.

Ahlers 26. Jun 2011 21:37

AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
 
Ich bin in den letzten Tagen nicht dazu gekommen, hier meinen "Progress" zu berichten.
Kurz: es funktioniert jetzt und hatte wirklich mit den Rechten zu tun.
Das Programm muss schon als Administrator aufgerufen werden (kann man ja als Option noch in die Eigenschaften beim Windows Explorer einstellen) und dann kommt immer noch die Abfrage, ob man Änderungen am Rechner zulassen möchte. Dann funktioniert es aber.
Da ich das ganze aber in einem Dienst ausführe, brauche ich diese Sachen nicht zu machen. Als Dienst funktioniert es auch so.

Danke für die Tips
Erwin


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Seite 1 von 2  1 2      

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