Trên Windows, làm thế nào tôi có thể duyên dáng yêu cầu một chương trình đang chạy chấm dứt?


17

Trên Unix hoặc Linux, thật dễ dàng để yêu cầu một ứng dụng đang chạy chấm dứt: bạn gửi tín hiệu SIGTERM. Nếu quá trình ID của nó là 1234, bạn chỉ có thể chạy kill 1234hoặc kill -s TERM 1234hoặc kill -15 1234.

Làm thế nào tôi có thể làm điều tương tự trong Windows?

Nếu tôi nhớ lại chính xác, tính năng "Kết thúc tác vụ" của Trình quản lý tác vụ (không phải là tính năng "Kết thúc quá trình" của nó) được sử dụng để làm những gì tôi muốn. Nhưng, kể từ Windows 8.1, nó không còn quá nhẹ nhàng nữa; Khi tôi sử dụng tính năng này, nó khiến tôi mất dữ liệu chưa được lưu.

Tôi không muốn viết bất kỳ mã nào để làm điều này. Nếu tôi đã làm, tôi sẽ hỏi về Stack Overflow. :)


2
Nếu bạn là nhà phát triển phần mềm và bạn muốn thực hiện việc này theo chương trình, hãy xem câu hỏi Stack Overflow liên quan về cách duyên dáng yêu cầu một quy trình chấm dứt .
không thể

4
Không có gì duyên dáng về Windows ........
Moab

Câu trả lời:


17

taskkill.exe

Andy E viết rằng bạn có thể sử dụng taskkill.exe.

Để chấm dứt quá trình với quy trình ID 1234:

taskkill /pid 1234

Để chấm dứt notepad.exe:

taskkill /im notepad.exe

Để được trợ giúp thêm:

taskkill /?

Ông nói thêm:

Công /ftắc sẽ buộc giết, nhưng không sử dụng nó chỉ gửi tín hiệu kết thúc để ứng dụng đóng lại một cách duyên dáng.

Anh ấy đúng. Tôi đã thử sử dụng taskkill.exe (không có /f) để chấm dứt Notepad và nó hoạt động như mong đợi. Notepad hỏi tôi có muốn lưu văn bản chưa lưu mà tôi đã nhập không.

Tôi đang sử dụng phiên bản Windows 8.1 tại nhà. Có vẻ như taskkill.exeđi kèm với Windows mà không phải trả thêm phí. Nó ở trong c:\windows\system32.

Hoặc chỉ cần đăng xuất

Nếu bạn không muốn làm phiền với bất kỳ điều gì trong số này, chỉ cần đăng xuất khỏi tài khoản người dùng Windows của bạn, sau đó đăng nhập lại.

Ứng dụng bảng điều khiển

Về các ứng dụng bảng điều khiển (ví dụ PowerShell), Chris Becke cho biết thêm :

Không có cách nào thực sự để đóng các ứng dụng console một cách duyên dáng trên Windows. Họ cần phải hỗ trợ một số loại cơ chế gần gũi duyên dáng.


Lưu ý rằng điều này không sao chép chính xác những gì xảy ra khi đăng xuất hoặc tắt máy; để biết điều đó, hãy xem stackoverflow.com/questions/520910/ Mạnh
Matt McHenry

5

Bạn có thể sử dụng rmlogotest.exe(Công cụ kiểm tra logo khởi động lại). Tiện ích phần mềm miễn phí này, được viết bởi Microsoft, là một phần của Bộ chứng nhận ứng dụng Windows.

Để có phiên bản mới nhất của Bộ chứng nhận ứng dụng Windows, hãy tải xuống và chạy trình cài đặt Windows SDK. (Bạn có thể tìm trình cài đặt Windows SDK mới nhất bằng cách thực hiện tìm kiếm Google.) Bỏ chọn tất cả các hộp ngoại trừ hộp Bộ chứng nhận ứng dụng Windows. Đợi cho bộ công cụ được tải xuống và cài đặt. Nếu tôi nhớ lại một cách chính xác, bộ sản phẩm là vài trăm megabyte.

rmlogotest.execó thể sẽ xuất hiện C:\Program Files (x86)\Windows Kits\10\App Certification Kitnếu bạn đang sử dụng phiên bản 10 của SDK Windows.

Mở một dấu nhắc lệnh. Thay đổi thư mục chính xác. Nhập rmlogotestmột khoảng trắng sau đó là số ID tiến trình của quy trình.

Nếu quy trình là "Khởi động lại trình quản lý nhận biết", rmlogotestsẽ khởi động lại nó một cách duyên dáng và cho bạn biết "Xác thực logo đã qua". Nếu không, rmlogotestsẽ yêu cầu nó chấm dứt một cách duyên dáng, sau đó có thể cho bạn biết "Không thể xác thực Logo".

Tôi đã thử sử dụng rmlogotest.exeđể chấm dứt Notepad và nó hoạt động như mong đợi. Notepad hỏi tôi có muốn lưu văn bản chưa lưu mà tôi đã nhập không.

(Trong trường hợp bạn thắc mắc Restart Manager là gì và làm gì, hãy để tôi giải thích. Restart Manager là một phần của Windows và được Windows Installer 4.0 sử dụng trở lên. Khi Windows Installer cần ghi đè hoặc xóa một tệp đang mở, nó sẽ sử dụng ba process process. Nó báo cho Restart Manager kết thúc một cách duyên dáng quá trình đang sử dụng tệp. Nó ghi đè lên tệp. Sau đó, nó báo cho Restart Manager bắt đầu lại quá trình.)


0

GnuWIN32 có các cổng windows của các tiện ích linux phổ biến bao gồm kill.exe

http://gnuwin32.sourceforge.net/

Nó hỗ trợ các tín hiệu sau theo tên hoặc một số

λ kill -l                                                                                                                                                                                                                                                                
INT                                                                                                                                                                                                                                                                      
ILL                                                                                                                                                                                                                                                                      
FPE                                                                                                                                                                                                                                                                      
KILL                                                                                                                                                                                                                                                                     
SEGV                                                                                                                                                                                                                                                                     
TERM                                                                                                                                                                                                                                                                     
CHLD                                                                                                                                                                                                                                                                     
ABRT             
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.