Hilfe! Mir CreateDirectory erzeugte Ordner lassen sich nicht löschen
-
Guten Tag
Ich habe mir eine Funktion geschrieben dass einen Ordner anlegt.
Dabei wird überprüft ob der Pfad gültig ist und ob der Ordner schon vorhanden ist.Doch aus irgend einem Grund kann ich die mit CreateDirectory erzeugten Ordner nicht mehr löschen.
Wenn ich die Ordner im Explorer löschen möchte, bekomme da 2 verschiedene Meldungen:
Datei kann nicht gelöscht werden: Die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden.
Und:
01 kann nicht gelöscht werden: Verzeichnis ist nicht leer.
01 ist dabei der Name des Ordners (Der Ordner enthält keine Dateien/Ordner).
Ich kann aber im Explorer normal auf die betroffenen Ordner zugreifen, Datein hineinkopieren, wieder löschen, die enthaltenen Dateien öffnen usw.
Weis jemand was da falsch läuft?
UINT MyCreateDirectory(LPCTSTR pPath) { /* Überprüfen ob der String ein gültiger Pfad ist -> Überprüfen ob Laufwerk existiert -> Überprüfen ob ungültige Zeichen enthalten sind -> Überprüfen ob mehrfache Backslash (_T("\\\\")) vorhanden sind */ if(!IsValidPath(pPath)){ return (-1); } // Überprüfen ob der Ordner existiert if(PathFileExists(pPath)){ return FALSE; } // Wenn der Ordner nicht existiert-> anlegen if(!CreateDirectory(pPath,NULL)){ return (-2); } return TRUE; }Ich bin im Debugmodus alles durchgegangen um sicher zu gehen dass wirklich ein gültiger Pfad an CreateDirectory übergeben wird.
Ich habe das Programm auf einem PC mit XP und einem mit Vista getestet.
Auf beiden Rechnern gibt es das selbe Problem.
Ich arbeite mit VS2005Was muß ich machen damit dieses Problem nicht mehr auftritt und wie kann ich die existierenden Dateien wieder Löschen?
Die Fehlerüberprüfung (Chkdsk) hat die Ordner jedenfalls nicht wieder hinbekommen.mfg Barny
-
versuch sie mal via "rd" in der Console zu löschen...
Aber normal sollte es keine Probleme geben...
-
Konsole und rd hat leider nicht funktioniert.
Aber in einem einfachen dass den Befehl RemoveDirectory verwendet, hat es geklappt.Es bleibt aber die Frage warum es überhaupt so weit gekommen ist dass sich die Ordner im Explorer nicht mehr löschen lassen haben.
Gibt es etwas worauf man achten muß?
Gib es außer \,/,:,*,?,",<,>|,\t,\r,\n,\a sonst noch Zeichen die in einem Ordneramen nicht verwendet werden dürfen?
-
Siehe:
http://msdn.microsoft.com/en-us/library/aa365247PD: Der Explorer kann einige Verzeichnisse nicht löschen... das betrifft sowohl spezielle Namen "wie "NUL" oder "COM1" als auch ab einer gewissen "Tiefe".
-
Danke für den brandneuen Link.
Dass Leerzeichen am Schluss des Namens wars.
(Dass war genau der einzige Fall der bei der Gültigkeitsprüfung nicht abgefragt wurde.)Einen schönen Tag noch.