Prozess nach Name und Besitzer töten?

12

Kennt jemand eine Anwendung / ein Dienstprogramm, mit dem ich Prozesse beenden und nach Prozessname und Prozessverantwortlicher filtern kann, bevor ich mich mit der Neuerfindung des Rads und dem Rollen meines eigenen Rads befasse ? Alternativ könnte dies durch Powershell geschehen? (Mein Powershell-Fu fehlt leider).

Ich habe beide angeschaut pskillund taskkill. Obwohl das pskillBeenden nach Prozessnamen möglich ist, kann ich nicht weiter nach Prozessverantwortlichen filtern. Ich habe mir WMI auch über wmic ( wmic process) angesehen, aber die WMI-Schnittstelle gibt den Prozessverantwortlichen nicht zurück (zumindest soweit ich das beurteilen kann), kann dies also auch nicht verwenden.

Begründung
Ich mache einen Teil der Entwicklung unter Windows. Ein Teil davon beinhaltet den Umgang mit Komponentendiensten (COM +). COM + hat einen generischen Host-Prozess - dllhost.exe - der sowohl für benutzerdefinierte (dh von mir entwickelte) Elemente als auch für Systemprozesse verwendet wird. Ich kann sie nach dem Eigentümer unterscheiden, als den sie geführt werden. So möchte ich beispielsweise alle Prozesse von dllhost.exe beenden, die mir gehören, aber die Prozesse von SYSTEM ignorieren.

Dies würde es mir ersparen, regelmäßig zum Task-Manager zu gehen und jeden einzelnen zu identifizieren und manuell zu töten :-)

Chris J.
quelle

Antworten:

5

In Powershell würden Sie tun:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
EBGreen
quelle
Ah - ausgezeichneter Beifall. Das funktioniert gut :-)
Chris J
24

Du hast nicht hart genug gesucht.

taskkill /f /fi "imagename eq foo.exe" /fi "username eq Chris"

Sie können sogar nach geladenen Modulen filtern, indem Sie /fi "modules eq libfoo.dll".

user1686
quelle
2
Viel einfacher als die PS-Methode :)
EBGreen
Du hast recht - ich habe nicht genau genug gesucht. Das ist schlecht von mir.
Chris J