Giết quá trình theo tên và chủ sở hữu?


12

Trước khi tôi xem xét việc phát minh lại bánh xe và tự lăn, có ai biết ứng dụng / tiện ích cho phép tôi tiêu diệt các quy trình, lọc theo cả tên quy trình chủ sở hữu quy trình không? Hoặc điều này có thể được thực hiện thông qua powershell? (Powerhell-fu của tôi thật đáng buồn).

Tôi đã xem cả hai pskilltaskkill. Mặc dù pskillcho phép chấm dứt theo tên quy trình, nhưng nó không cho phép tôi lọc thêm bởi chủ sở hữu quy trình. Tôi cũng đã xem WMI qua wmic ( wmic process), nhưng giao diện WMI không trả về chủ sở hữu quy trình (ít nhất là từ những gì tôi có thể nói), vì vậy cũng không thể sử dụng giao diện này.

Cơ sở lý luận
Tôi thực hiện một đoạn phát triển trên Windows. Một số điều này liên quan đến việc xử lý các Dịch vụ Thành phần (COM +). COM + có một quy trình lưu trữ chung - dllhost.exe - được sử dụng cho cả các phần tử tùy chỉnh (nghĩa là thứ tôi đã phát triển) và các quy trình hệ thống. Tôi có thể phân biệt chúng bởi chủ sở hữu mà họ điều hành. Vì vậy, ví dụ, tôi muốn giết tất cả các quy trình dllhost.exe do tôi sở hữu, nhưng bỏ qua các quy trình do HỆ THỐNG sở hữu.

Điều này sẽ giúp tôi tiết kiệm được vào Trình quản lý tác vụ một cách thường xuyên và xác định và giết thủ công từng người :-)

Câu trả lời:


5

Trong powershell bạn sẽ làm:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}

Ah - chúc mừng tuyệt vời. Điều đó hoạt động độc đáo :-)
Chris J

24

Bạn không nhìn đủ khó.

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

Bạn thậm chí có thể lọc theo các mô-đun được tải, sử dụng /fi "modules eq libfoo.dll".


2
Dễ dàng hơn nhiều so với phương pháp PS :)
EBGreen

Bạn nói đúng - Tôi đã không nhìn đủ khó. Điều đó thật tệ với tôi.
Chris J
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.