![]() |
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 |
AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
Erst mal ... Willkommen :dp:
Zitat:
Auch wenn ich es nicht genau weiß, denke ich, daß du mit deiner Vermutung Recht hast. |
AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
Hallo und willkommen in der :dp:
in meinem Programm ![]() ![]() Edit: Für den MSDN Beitrag ist noch die Unit TlHelp32 wichtig. |
AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
![]() ![]() und eventuell noch das hier ![]() 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
|
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 |
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. |
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 |
AW: Prozessname von 32Bit Applikation unter 64Bit Windows 7
Zitat:
|
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. |
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 03:22 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