Come posso sbloccare un file bloccato da un processo in .NET [duplicato]
-
04-07-2019 - |
Domanda
Questa domanda ha già una risposta qui:
- Sblocca i file per l'eliminazione 2 risposte
Voglio che la mia applicazione pulisca tutti i file temporanei che ha usato, il problema è che non tutti i file temporanei sono sotto il mio controllo, quindi voglio solo "brutalmente" sbloccarli per eliminarli programmaticamente.
Soluzione
Dai un'occhiata a this articolo. Penso che farai fatica a farlo nativamente in C #, anche usando l'interoperabilità, ma scrivere un assembly wrapper C ++ / CLI potrebbe essere un buon compromesso. Si noti inoltre che l'utente deve disporre del privilegio SE_DEBUG affinché funzioni.
Altri suggerimenti
Ho anche lottato con questo, e ho finito per sborsare all'implementazione della riga di comando di Unlocker. Nel mio caso, deve essere eseguito più volte al giorno e finisce per sbloccare migliaia di file al giorno senza problemi.
Sicuramente, la tua applicazione vuole ripulire i file temporanei che possiede, quindi hai il pieno controllo per sbloccare questi file ed eliminarli!
Se vuoi eliminare tutti i file TEMP, di proprietà della tua applicazione o meno, dovresti stare MOLTO attento. Probabilmente l'applicazione originale ha applicato il blocco perché desidera utilizzare il file!
Se davvero è necessario, potresti sempre generare un'applicazione da riga di comando invece di provare a replicare la funzionalità degli strumenti esistenti che sarà difficile in C #.
Dai un'occhiata a thread nei forum MSDN. Ci sono abbastanza informazioni per fare quello che vuoi, ma non è raccomandato.