在 Windows 上,如何优雅地要求正在运行的程序终止?

unf*_*ica 27 windows kill task-manager process exit

在 Unix 或 Linux 上,很容易优雅地要求正在运行的应用程序终止:您向它发送 SIGTERM 信号。如果它的进程 ID 是 1234,你可以简单地运行kill 1234orkill -s TERM 1234kill -15 1234

如何在 Windows 中做同样的事情?

如果我没记错的话,任务管理器的“结束任务”功能(不是它的“结束进程”功能)曾经用来做我想做的事。但是,从 Windows 8.1 开始,它不再那么温和了;当我使用该功能时,它会导致我丢失未保存的数据。

我不想为此编写任何代码。如果我这样做了,我会问 Stack Overflow。:)

unf*_*ica 23

任务杀戮工具

Andy E写道,您可以使用taskkill.exe.

要终止进程 ID 为 1234 的进程:

taskkill /pid 1234
Run Code Online (Sandbox Code Playgroud)

要终止 notepad.exe:

taskkill /im notepad.exe
Run Code Online (Sandbox Code Playgroud)

如需更多帮助:

taskkill /?
Run Code Online (Sandbox Code Playgroud)

他补充说:

/f开关将强制终止,但不使用它只会发送终止信号,以便应用程序正常关闭。

他是对的。我尝试使用 taskkill.exe(没有/f)来终止记事本,它按预期工作。记事本问我是否要保存我输入的未保存文本。

我使用的是家庭版的 Windows 8.1。它看起来像是taskkill.exe随 Windows 一起提供的,无需额外费用。它在c:\windows\system32.

或者直接退出

如果您不想为此烦恼,只需注销您的 Windows 用户帐户,然后重新登录即可。

控制台应用程序

关于控制台应用程序(例如 PowerShell),Chris Becke补充说

没有真正的方法可以在 Windows 上优雅地关闭控制台应用程序。他们需要支持某种优雅的关闭机制。


unf*_*ica 8

您可以使用rmlogotest.exe(重新启动管理器徽标测试工具)。这个由 Microsoft 编写的免费软件实用程序是 Windows 应用程序认证工具包的一部分。

要获取最新版本的 Windows 应用认证工具包,请下载并运行 Windows SDK 安装程序。(您可以通过 Google 搜索找到最新的 Windows SDK 安装程序。)取消选中除 Windows App Certification Kit 框之外的所有框。等待套件下载并安装。如果我没记错的话,该套件有几百兆字节。

rmlogotest.exeC:\Program Files (x86)\Windows Kits\10\App Certification Kit如果您使用的是 Windows SDK 的第 10 版,则可能会出现。

打开命令提示符。切换到正确的目录。rmlogotest然后输入一个空格,然后输入进程的进程 ID 号。

如果该进程是“重启管理器感知”,rmlogotest则会正常重启它并告诉您“徽标验证通过”。否则,rmlogotest会要求它优雅地终止,然后可能会告诉你“Logo Validation Failed”。

我尝试使用rmlogotest.exe终止记事本,它按预期工作。记事本问我是否要保存我输入的未保存文本。

(如果您想知道重启管理器是什么以及做什么,让我解释一下。重启管理器是 Windows 的一部分,由 Windows Installer 4.0 及更高版本使用。当 Windows Installer 需要覆盖或删除打开的文件时,它使用三个- step 进程。它告诉重启管理器优雅地结束正在使用该文件的进程。它覆盖文件。然后它告诉重启管理器再次启动该进程。)