On Windows, how can I gracefully ask a running program to terminate?

Solution 1:

taskkill.exe

Andy E writes that you can use taskkill.exe.

To terminate the process with process ID 1234:

taskkill /pid 1234

To terminate notepad.exe:

taskkill /im notepad.exe

For more help:

taskkill /?

He adds:

The /f switch would force the kill, but not using it just sends the termination signal so the application closes gracefully.

He's right. I tried using taskkill.exe (without /f) to terminate Notepad, and it worked as expected. Notepad asked me whether or not I wanted to save the unsaved text which I'd entered.

I'm using the home version of Windows 8.1. It looks like taskkill.exe came included with Windows at no extra charge. It's in c:\windows\system32.

Or just log out

If you don't want to bother with any of this, simply log out of your Windows user account, then log back in again.

Console applications

Regarding console applications (e.g. PowerShell), Chris Becke adds:

There is no real way to close console applications gracefully on Windows. They need to support some kind of graceful close mechanism.

Solution 2:

You can use rmlogotest.exe (the Restart Manager Logo Test Tool). This freeware utility, written by Microsoft, is part of the Windows App Certification Kit.

To get the latest version of the Windows App Certification Kit, download and run the Windows SDK installer. (You can find the latest Windows SDK installer by doing a Google search.) Uncheck all the boxes except for the Windows App Certification Kit box. Wait for the kit to be downloaded and installed. If I recall correctly, the kit is a couple hundred megabytes.

rmlogotest.exe will probably be in C:\Program Files (x86)\Windows Kits\10\App Certification Kit if you're using version 10 of the Windows SDK.

Open a command prompt. Change to the correct directory. Enter rmlogotest then a space then the process's process ID number.

If the process is "Restart Manager aware", rmlogotest will gracefully restart it and tell you "Logo Validation Passed". Otherwise, rmlogotest will ask it to gracefully terminate, then may tell you "Logo Validation Failed".

I tried using rmlogotest.exe to terminate Notepad, and it worked as expected. Notepad asked me whether or not I wanted to save the unsaved text which I'd entered.

(In case you wonder what Restart Manager is and does, let me explain. Restart Manager is part of Windows, and is used by Windows Installer 4.0 and up. When Windows Installer needs to overwrite or delete an open file, it uses a three-step process. It tells Restart Manager to gracefully end the process which is using the file. It overwrites the file. Then it tells Restart Manager to start the process again.)