Non stiamo parlando di un riavvio / riavvio qui (simile a un'altra domanda). Questa domanda distingue il diverso modo in cui Windows gestisce i blocchi di file esistenti su un taskkill rispetto al modo in cui risponde a un arresto / riavvio.
Se forzo l'uccisione di un programma, i file che ha bloccato rimarranno comunque bloccati o verranno rilasciati i blocchi quando anche il processo termina?
Per uccisione forzata, intendo come usare il comando 'taskkill' o 'albero del processo di fine' in taskmanager.
Per chiarire ulteriormente, non sto parlando di un processo che lascia un file di blocco ausiliario non rimosso residente, come MS Word. Sto parlando dello stato di un vero blocco di file esclusivo o condiviso.
Taskkill rilascia un filelock? O il blocco rimane attivo fino a quando non viene eseguita un'azione di riavvio o di un utente amministratore nella console di gestione del computer?
Ecco cosa posso confermare: uccidere un processo a 16 bit che inserisce un blocco esclusivo
Questo utilizza un piccolo programma console che inserisce un blocco esclusivo su un file nella stessa directory locale. Il programma rimane in esecuzione fino a quando l'utente preme un tasto e quindi sbloccherà il file. Ecco cosa succede:
Se lanciato al prompt dei comandi e ucciso nel taskmanager, rilascia il blocco. Il processo per uccidere è il cmd.exe specifico che ha avviato il programma. Ucciderlo rilascia il blocco.
Se avviato facendo clic e quindi ucciso chiudendo la finestra, il blocco viene rilasciato.
Tuttavia, se avviato facendo clic e quindi uccidendo il conhost.exe nel taskmanager, non rilascia il blocco. In questo caso, non esiste nemmeno cmd.exe perché è stato fatto clic. Quindi l'unico modo per ucciderlo è uccidere il conhost.exe o ntvdm.exe in cui è in esecuzione. Il blocco rimane in posizione fino a dopo il riavvio.
Se avviato facendo clic e quindi uccidendo ntvdm.exe in taskmanager, rilascia il blocco.
In nessun momento il blocco esclusivo impedisce effettivamente l'eliminazione del file. Tuttavia, Windows non consente di copiare il file in Explorer mentre è attivo il blocco.
Quindi, due comportamenti diversi a seconda che l'attività venga avviata tramite il prompt cmd o facendo clic e uccidendo il sottosistema conhost o ntvdm. Ovviamente, uccidere il sottosistema ntvdm.exe uccide anche qualsiasi altro processo assegnato nel thread ntvdm.