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


13

在Unix或Linux上,很容易优雅地要求正在运行的应用程序终止:您向它发送SIGTERM信号。如果其进程ID为1234,则只需运行kill 1234kill -s TERM 1234kill -15 1234

如何在Windows中执行相同的操作?

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

我不想写任何代码来执行此操作。如果我这样做,我会问Stack Overflow。:)


2
如果您是软件开发人员,并且希望以编程方式执行此操作,请参阅有关如何优雅地请求进程终止的相关Stack Overflow问题
令人难以忘怀的2015年

4
Windows没有什么优雅的........
Moab 2015年

Answers:


14

taskkill.exe

安迪E 写道,你可以使用taskkill.exe

要使用进程ID 1234终止进程:

taskkill /pid 1234

要终止notepad.exe:

taskkill /im notepad.exe

如需更多帮助:

taskkill /?

他补充说:

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

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

我正在使用Windows 8.1的主页版本。它看起来像taskkill.exeWindows附带,无需额外费用。它在c:\windows\system32

或者只是退出

如果您不想打扰任何此类操作,只需注销Windows用户帐户,然后重新登录即可。

控制台应用

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

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


请注意,这并不完全复制注销或关闭时发生的情况; 为此,请参阅stackoverflow.com/questions/520910 / ...
Matt McHenry 2016年

5

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

要获取最新版本的Windows App Certification Kit,请下载并运行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将要求它优雅地终止,然后可能会告诉您“徽标验证失败”。

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.