Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Ordner löschen: mit Win gehts nicht, mit Delphi schon ? (https://www.delphipraxis.net/100620-ordner-loeschen-mit-win-gehts-nicht-mit-delphi-schon.html)

Helmi 1. Okt 2007 14:52


Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Hallo,

ich bin gerade total verwirrt.

Ich hatte mal eine Installation ausgeführt bei der leider der Windows-Installer Dateien entpackte und diese auf meiner externen Festplatte in einen Ornder zwischenparkte.
Soweit so gut, mein Problem war, dass ich diesen Ordner nicht mehr löschen konnte.

Mein Vista sagte, ich hätte nicht die Berechtigungen diesen zu löschen (trotz Admin-Rechten und ausgeschalteter Benutzerkontensteuerung oder wie das Ding heisst).

Letztens hatte ich diese Festplatte bei einem Freund und hab hatte ihm gebeten zu versuchen diesen Ordner zu löschen.
Er hat Win XP Pro. Auch Win XP hat sich geweigert. Er hatte dann noch ein Tune Up-Programm mit dem man Daten löschen kann.
Das hat dann soweit auch geklappt, bis auf einen Unterordner und dessen Dateien. Diese konnten nicht gelöscht werden und deswegen auch nicht der eigentliche Ordner.

Nun hatte ich zwar weniger Dateien, aber dieser Ordner war noch da.

Jetzt dacht ich mir ich könne ja mal probieren, diesen Ordner mit einem Code aus Delphi raus zu löschen.

Bei dsdt.info hab ich diesen Code gefunden:

Delphi-Quellcode:
uses ShellAPI;

function DeleteFile(const AFile: string): boolean;
var
 sh: SHFileOpStruct;
begin
 ZeroMemory(@sh, sizeof(sh));
 with sh do
   begin
   Wnd := Application.Handle;
   wFunc := fo_Delete;
   pFrom := PChar(AFile +#0);
   fFlags := fof_Silent or fof_NoConfirmation;
   end;
 result := SHFileOperation(sh) = 0;
end;
Da dieser Code die ShellAPI verwendet, dacht ich mir es könne ja nicht funktionieren, da ja Windows mit die Finger im Spiel hat.

ABER: Ich kann es nicht fassen. Ich bekam ein true von dieser Funktion und bei einem Blick auf die Festplatte: Der Ordner ist verschwunden, weg, away, verflogen,... - einfach nicht mehr da.

Nun wieder zu meiner Verwirrtheit:
Wieso konnt ich den mit dem oberen Code löschen, aber über Windoofs nicht?

Helmi 2. Okt 2007 12:56

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
push

RavenIV 2. Okt 2007 13:33

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Mit dem Satz "über Winows löschen" meinst Du vermutlich "mittels Windows-Explorer löschen".

Also:
Der Explorer prüft vor dem Löschen eine ganze Latte an Sachen.
z.B. Berechtigungen, offene Zugriffe auf die Date, usw.

Wenn Du mit den shFileOperations kommst, dann benutzt Du den grossen Hammer, um die Dateien aus dem System zu klopfen. Das ist nicht schön und bestimmt von MS auch nicht so gewollt...

sakura 2. Okt 2007 13:35

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Zitat:

Zitat von RavenIV
Wenn Du mit den shFileOperations kommst, dann benutzt Du den grossen Hammer, um die Dateien aus dem System zu klopfen. Das ist nicht schön und bestimmt von MS auch nicht so gewollt...

Die nutzt der Windows Explorer auch nur :gruebel:

...:cat:...

RavenIV 2. Okt 2007 13:40

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Der Windows-Explorer prüft aber vorher noch jede Menge Sachen.
Erst dann benutzt er den Hammer und Meisel.

DMW 2. Okt 2007 14:42

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Auch auf meinem System blockiert der Explorer oft das Löschen von Verzeichnissen. Es hat vermutlich damit zu tun, daß ich eine meiner Festplattenpartitionen mittels Reparse Point in einen Unterordner einer anderen gemountet habe, denn es tritt nur dort auf.
Von der Kommandozeile (rd) oder mittels eines Fremdprogrammes funktioniert es aber.

blackdrake 2. Okt 2007 22:38

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Hallo.

Wenn du ein Problen haben solltest, eine Datei zu löschen, die ständig benutzt wird (oder aus irgendeinem anderen Grund gesperrt und vllt. nicht mehr freigegeben wurde), kann dir das Tool "Unlocker" (http://ccollomb.free.fr/unlocker/) helfen. Dieses Tool gibt das Handle frei oder killt den Prozess auf nachfrage.

Gruß
blackdrake

Noinini 6. Okt 2007 08:54

Re: Ordner löschen: mit Win gehts nicht, mit Delphi schon ?
 
Hallo zusammen,

eine Reihe nützlicher Windows-Tools gibt es auch bei Sysinternals.

Viele Grüße

Iris


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz