FileSystemObject "Permission Denied" auf DeleteFile und CreateTextFile

Ich untersuche ein problem mit einem alten VB6-app, die gerade erst begonnen hat, geschieht auf der speziellen XP-Rechner läuft es. Die Anwendung verarbeitet E-Mail-Nachrichten und für jeden Artikel es schreibt eine Datei in ein lokales Verzeichnis, übergibt den Pfad der Datei an eine andere Funktion für die Verarbeitung löscht dann die Datei über einen Kill-Befehl.

Es scheint alles zu funktionieren, bis ein Fehler während der Verarbeitung. Der Fehler-handler hat keine explizite Töten oder DeleteFile in es, der Fehler wird gerade bearbeitet und die Verarbeitung wird mit der nächsten Nachricht. Sobald dies der Fall ist, die CreateTextFile-Methode schlägt fehl, für jeden weiteren Artikel mit einem 'Permission denied' - Fehler, da die Datei bereits existiert (auch wenn der CreateTextFile-Aufruf übergibt gilt für überschreiben).

Ich habe versucht, verschiedene Dinge, vor allem putting Töten, BFS.DeleteFile oder ein Aufruf an die DeleteFile-API in der error-handler, doch keine dieser arbeiten (die ersten beiden Fehler mit permission denied, die API nicht Fehler aber nicht löschen Sie die Datei entweder).

Ich habe Unlocker installiert auf der Maschine, und der einzige Prozess mit einem lock auf die Datei wird die Anwendung in Frage. Filemon Berichte eine "Zugriffsverletzung" auf der Datei nach einer 'IRP_MJ_CREATE', sobald das problem Auftritt, so denke ich, könnte dies verweist auf das Problem, aber ich kann nicht sehen, was das problem eigentlich ist.

Den vereinfachten code, ist wie folgt:

Do While objMessages.Count > 0
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    Set tsObj = fsObj.CreateTextFile("C:\Temp\MyFile.txt", True)
    ...
    tsObj.Close
    Set tsObj = Nothing
    Set fsObj = Nothing
    ...
    <some processing which may raise an error>
    ...
    Kill ("C:\Temp\MyFile.txt")    ' Works if no error raised & processing continues ok
    ...
    ...
Loop

ErrorHandler:
    Kill ("C:\Temp\MyFile.txt")                             ' Permission Denied
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    fsObj.DeleteFile("C:\Temp\MyFile.txt", True)            ' Permission Denied 
    Dim lRet As Long
    lRet = DeleteFile(gstrBodyTextFile)                     ' Nothing done
    ' After error, processing returns to calling procedure 
    ' which is in a loop and calls back into here and starts
    ' to fail on CreateTextFile

Dieser hat mich ratlos, muss ich zugeben, wenn jemand vorschlagen kann, was es sein könnte würde ich mich freuen. Ich sollte hinzufügen, dass McAfee war auf dem Rechner installiert, aber ich habe entfernt, um auszuschließen, seine inteference (obwohl Unlocker sollte nichts anderes als sich mit der Datei), aber immer noch der Fehler besteht weiterhin.

Dank

Wie sicher sind Sie, dass kein Fehler aufgetreten ist, bevor der code hat die chance, die Datei zu schließen (wie ein Fehler vor der tsObj.Close)?
Sie haben ausgefiltert code "<einige Verarbeitungen, die möglicherweise das auslösen einer Fehler - >"...jede chance, dass code openened die betreffende Datei, und der Fehler während der Verarbeitung, die Sie erwähnen, bewirkt, dass Sie zu springen, bevor es geschlossen wird?
Könnten Sie die post der fehlende Abschnitt von code bitte, obwohl Sie erwähnen, es hat eine eigene Fehlerbehandlung, es kann halten Sie die Taste ^_^
Sie sollten wirklich sein, wickeln Sie Ihren Anruf zu "Töten" Sie die Datei in einem check für die Existenz. I. e Wenn fsObj.FileExists("C:\Temp\MyFile.txt") Dann ...

InformationsquelleAutor RichardB | 2012-04-04

Schreibe einen Kommentar