In Windows, come posso graziosamente chiedere a un programma in esecuzione di terminare?

Su Unix o Linux, è facile chiedere con grazia che un'applicazione in esecuzione sia terminata: l'invia il segnale SIGTERM. Se il suo ID di process è 1234, puoi semplicemente eseguire kill 1234 o kill -s TERM 1234 oppure kill -15 1234 .

Come posso fare la stessa cosa in Windows?

Se mi ricordo correttamente, la funzionalità "Fine attività" di Task Manager (non la sua function "Fine process") utilizzava ciò che voglio. Ma, a partire da Windows 8.1, non è più così dolce; quando utilizzo la funzionalità, mi causa perdere dati non salvati.

Non voglio scrivere alcun codice per farlo. Se lo facessi, chiederei su Stack Overflow. 🙂

Taskkill.exe

Andy E scrive che è ansible utilizzare taskkill.exe .

Per terminare il process con ID process 1234:

 taskkill /pid 1234 

Per terminare notepad.exe:

 taskkill /im notepad.exe 

Per ulteriori informazioni:

 taskkill /? 

Aggiunge:

L'interruttore /f obbligherà l'uccisione, ma non lo utilizza semplicemente invia il segnale di terminazione in modo che l'applicazione si chiude con grazia.

Ha ragione. Ho provato a usare taskkill.exe (senza /f ) per terminare il block note e funzionava come previsto. Notepad mi ha chiesto se ho voluto salvare il text non salvato in cui ero entrato.

Sto utilizzando la versione home di Windows 8.1. Sembra che taskkill.exe è incluso con Windows senza alcun costo aggiuntivo. È in c:\windows\system32 .

O semplicemente uscire

Se non si desidera preoccuparsi di ciò, è sufficiente disconnettersi dall'account utente di Windows, quindi eseguire nuovamente il login.

Applicazioni della console

Per quanto riguarda le applicazioni della console (ad es. PowerShell), Chris Becke aggiunge :

Non esiste un vero e proprio modo per chiudere le applicazioni console graziosamente su Windows. Hanno bisogno di sostenere un qualche tipo di meccanismo stretto e grazioso.

È ansible utilizzare rmlogotest.exe (il rmlogotest.exe riavvio del test di rmlogotest.exe gestione). Questa utilità freeware, scritta da Microsoft, fa parte del kit di certificazione di Windows App.

Per get l'ultima versione del kit di certificazione di Windows App, scaricare e eseguire l'installazione di Windows SDK. (È ansible trovare l'ultimo programma di installazione di Windows SDK eseguendo una ricerca di Google.) Deseleziona tutte le caselle tranne per la casella di certificazione di Windows App. Attendere che il kit venga scaricato e installato. Se mi ricordo correttamente, il kit è un paio di centinaia di megabyte.

rmlogotest.exe sarà probabilmente nel file C:\Program Files (x86)\Windows Kits\10\App Certification Kit se si utilizza la versione 10 del SDK di Windows.

Aprire un prompt dei comandi. Passare alla directory corretta. Inserisci rmlogotest quindi uno spazio quindi il numero ID del process di process.

Se il process è "consapevole di riavvio Manager", rmlogotest riavvierà con grazia e ti dirà "Validation Logo Passed". Altrimenti, rmlogotest lo chiederà di terminare graziosamente, quindi potrebbe dirti "Validation Logo Failed".

Ho provato a usare rmlogotest.exe per terminare il Blocco note e funzionava come previsto. Notepad mi ha chiesto se ho voluto salvare il text non salvato in cui ero entrato.

(Se si chiede cosa sia e fa il riavvio di risorse, mi spiego: La riavvio di gestione è parte di Windows e viene utilizzata da Windows Installer 4.0 e successe Quando Windows Installer deve sovrascrivere o eliminare un file aperto, passo indietro, il gestore di riavvio ha terminato graziosamente il process che utilizza il file, sovrascrive il file, quindi dice a Restart Manager di avviare nuovamente il process.)