2009-08-10 5 views

Antwort

1

Sie können nicht gelöscht werden, während ein anderer Prozess es verwendet wird. Dies kommt von Low-Level-Dateihandling von Windows. Sie können jedoch damit umgehen, dass Sie die Datei umbenennen oder sie beim nächsten Start löschen lassen.

Process Explorer Tool kann Ihnen helfen, zu finden, welcher Prozess die Datei verwendet, und es kann den Handle tatsächlich schließen - richtige/administrative Rechte gegeben. So ist es mit API-Aufrufen möglich, aber ein solches erzwungenes Schließen der Dateikennung kann zu einem unvorhersehbaren Verhalten dieses Prozesses führen.

0

Wenn Sie es nicht löschen können, können Sie es möglicherweise umbenennen, aber ich bin mir nicht sicher, warum einige gesperrte Dateien umbenannt werden können, während andere nicht können.

Sie können auch planen beim nächsten Systemstart mit MoveFileEx mit einem Null-Ziel und der MOVEFILE_DELAY_UNTIL_REBOOT Flag gelöscht werden:
http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx
http://www.pinvoke.net/default.aspx/kernel32/MoveFileEx.html
http://www.pinvoke.net/default.aspx/Enums/MoveFileFlags.html

0

Wenn Sie My.Computer.FileSystem.DeleteFile verwenden, Sie können den Benutzer darüber informieren, welches Programm die Datei gesperrt hat, wenn ein anderes Programm die Datei verwendet. Es kann nicht gelöscht werden, wenn es verwendet wird.

Try 
    My.Computer.FileSystem.DeleteFile("C:\Documents and Settings\anybody\Desktop\dummy.doc", _ 
            FileIO.UIOption.AllDialogs, _ 
            FileIO.RecycleOption.DeletePermanently, _ 
            FileIO.UICancelOption.ThrowException) 
Catch ex As System.IO.IOException 
    Console.WriteLine(ex.ToString()) 
End Try 
Verwandte Themen