Löschen von Dateien

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Löschen von Dateien

Post by *Lefteous »

Folgendes Szenario verursacht bei mir Probleme:

Der Benutzer "Cleaner" hat keinerlei Zugriffsrechte auf "C:\" und "C:\Dokumente und Einstellungen". Er hat jedoch volle Zugriffsrechte auf "C:\Dokumente und Einstellungen\Cleaner". In diesem Verzeichnis befindet sich eine Datei "Delete.me". Mit dem Total Commander kann ich sie jedoch nicht löschen. Die Fehlermeldung lautet: "Entfernen Sie den eventuell vorhandenen Schreibschutz".
Die Datei hat nicht das Attribut "Nur-Lesen".
Die Datei wurde von Cleaner erstellt, kann verändert werden und es wird im Sicherheits-Dialog auch angezeigt, dass "Cleaner" alle Rechte hat.

Folgender Delphi Code löscht die Datei erfolgreich (Programm von Cleaner ausgeführt):

Code: Select all

var
        path: String;
begin

        path := 'C:\\Dokumente und Einstellungen\\Cleaner\\Delete.me';
        DeleteFile (path);
end;
Jonas
Senior Member
Senior Member
Posts: 325
Joined: 2003-05-27, 16:59 UTC
Location: Germany
Contact:

Re: Löschen von Dateien

Post by *Jonas »

Lefteous wrote:Mit dem Total Commander kann ich sie jedoch nicht löschen. Die Fehlermeldung lautet: "Entfernen Sie den eventuell vorhandenen Schreibschutz".
Löscht Du direct pder in den Papierkorb? In letzem Falle ist es ja nicht der TC sondern eine MS-Funktion....
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2Jonas

Danke für Deine Antwort. Ich glaube Du hast mich auf die richtige Spur gebracht. Es ist tatsächlich nur das Verschieben in den Papierkorb problematisch. So ganz verstanden, warum es nicht geht habe ich allerdings noch nicht. Ob nun "richtig" Löschen oder Verschieben in den Papierkorb - beides sind letztlich WINAPI-Funktionen.

Welche Rechte muss der Benutzer für den Recycler-Ordner im Wurzelverzeichnis einer Partition haben? Zum Hineinverschieben bräuchte man ja Schreibrechte und die sind ja ohnehin nicht da. Ich kapier das ehrlich gesagt nicht so ganz.

Update:

(Habe dem Cleaner inzwischen mal Schreibrechte verpasst - ohne geht auch bei Leserechten auf C:\ nur direktes Löschen.)
Das Verschieben in den Papierkorb ist scheinbar doch nicht das Problem! Es ist die Operation SHFileOperation, die in oben genannter Konfiguration nicht funktioniert - und das unabhängig davon, ob in den Papierkorb verschoben wird oder direkt gelöscht wird. Total Commander kann bei Win95Delete=0 Dateien löschen, dort wird ja die eigene Funktion (DeleteFile?) von Total Commander benutzt wird.
Mich wundert allerdings, dass die Fehlermeldung beim Verschieben in den Papierkorb bei Win95Delete=1 eine andere ist. Total Commander scheint hier eine andere Methode zu verwenden. Welche?

Auf C:\ kann nicht zugegriffen werden.
Zugriff verweigert

Was soll man davon halten?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Bei Win95Delete=0 verwendet TC DeleteFile, bei Win95Delete=1 dagegen SHFileOperation. Ersteres kann auch mit Umsch+Entf erreicht werden.
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2ghisler(Author)

danke für die Info. Was wird verwendet wenn Win95Delete=0 und man Entfernen drückt?
Ich dachte Shift+Del schaltet nur zwischen Löschen und Verschieben in Papierkorb um, wenn Win95Delete=1?
Bei Win95Delete=0 sehe ich da keinen Unterschied?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Was wird verwendet wenn Win95Delete=0 und man Entfernen drückt?
Das kommt drauf an, ob die Option "F8 löscht in den Papierkorb" gesetzt ist oder nicht. Falls ja, wird SHFileOperation benutzt, sonst DeleteFile.
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

"F8 löscht in den Papierkorb" ist gesetzt.
Kann es denn sein, dass wenn Win95Delete=0 gesetzt ist und ich F8 drücke ShFileOperation mit anderen Flags als bei Win95Delete=1 benutzt wird?
Bei Win95Delete=0 kommt zunächst die Sicherheitsabfrage des TC und dann die Fehlermeldung des TC "Entfernen Sie den eventuell vorhandenen Schreibschutz".
Bei Win95Delete=1 kommt nur die Fehlermeldung von SHFileOperation.

Bei eigenen Tests erhalte ich von SHFileOperation INVALID_HANDLE_VALUE (Errorcode=6) zurück und das unabhängig davon, ob FOF_ALLOWUNDO gesetzt ist.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Kann es denn sein, dass wenn Win95Delete=0 gesetzt ist und ich F8 drücke ShFileOperation mit anderen Flags als bei Win95Delete=1 benutzt wird?
Ja, bei Win95Delete=1 ruft TC via OLE2 quasi den Explorer auf, der dann SHFileOperation benutzt (vermute ich zumindest). TC ermittelt dazu das IShellFolder-Objekt des Vaterverzechnisses, dann dessen IContextMenu für die zu löschenden Dateien und ruft schliesslich (InvokeCommand mit dem Verb 'delete' auf.
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2ghisler(Author)

danke für die ausführlichen Infos. Unglaublich das es so gravierende Fehler (oder eher konzeptionelle Fehlentscheidungen) in einer solch systemnahen Bibliothek wie Shell32.dll gibt. Die Fehlermeldung spricht für sich (siehe oben). Letztlich läuft das Ganze auf die Frage heraus: Warum muss ich auf ein übergeordnetes Verzeichnis Zugriff haben um eine Datei zu löschen? Schließlich geht DeleteFile ja in jedem Fall...
User avatar
havanna
Member
Member
Posts: 163
Joined: 2003-02-27, 08:06 UTC
Location: Baden/Württemberg

Post by *havanna »

:evil: ...wahrscheinlich, damit wir auch die nächste Windows Version wieder brav einspielen, in der Hoffnung auf Besserung!
Tanstaafl
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

Ich möchte gerne den Ordner %userprofile%\Eigene Dateien\Test in den Papierkorb verschieben, aber es funktioniert nicht. Ich kann jedoch in %userprofile%\Eigene Dateien eine Datei Test.txt in den Papierkorb veschieben. Ich habe volle Zugriffsrechte auf den Ordner und die Dateien und bin Besitzer.
Auch auf den Papierkorb habe ich volle Zugriffsrechte. Ich benutze die Einstellung "Eine Einstellung für alle Laufwerke verwenden". Noch zu erwähnen ist, dass sich der Problemordner auf einem anderem Volume befindet. Das Verschieben eines Unterordners in den Papierkorb, der auf demselben Volume wie Recycler liegt, funktioniert.

Dies ist kein Total Commander Problem. Ich hoffe es erklärt sich trotzdem jemand bereit mir da weiterzuhelfen.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Der TC kann nur Dateien in den Papierkorb verschieben, keine Verzeichnisse...
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

ghisler(Author) wrote:Der TC kann nur Dateien in den Papierkorb verschieben, keine Verzeichnisse...
ich habe mich da etwas unklar ausgedrückt, wie ich gerade sehe. Das Ganze bezog sich auf die Einstellung Win95Delete=1 im Total Commander bzw. auf den Windows Explorer. Das beschriebene Problem tritt in beiden Fällen auf. Deswegen habe ich ja auch geschrieben, dass es kein Total Commander Problem ist.

Die Fehlermeldung lautet in beiden Fällen:

---------------------------
Fehler beim Löschen der Datei oder des Ordners
---------------------------
test kann nicht gelöscht werden: Der Zugriff wurde verweigert.

Stellen Sie sicher, dass der Datenträger weder voll noch schreibgeschützt
ist und die Datei gerade nicht verwendet wird.
---------------------------
OK
---------------------------


Meine Frage: An welcher Stelle sind die Rechte nicht ausreichend?
User avatar
norfie
Power Member
Power Member
Posts: 1194
Joined: 2003-02-18, 14:18 UTC

Post by *norfie »

Last edited by norfie on 2004-09-10, 21:39 UTC, edited 1 time in total.
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2norfie
%userprofile%\Eigene Dateien\Test befindet sich auf einem anderen Laufwerk als
%userprofile%\Eigene Dateien?
Nein das Volume ist in %userprofile%\Eigene Dateien eingehängt. Test ist ein einfaches Unterverzeichnis. Der Papierkorb befindet sich auf der Systempartition, die in C: eingehängt ist. Auf einem anderem Volume meint hier also nur auf einem anderem Volume als der Papierkorb.
Kann es sein, dass sich "Mount-Points" nicht so ohne weiteres loeschen lassen?
Es soll also auch kein Mount-Point gelöscht werden. Falls ichs noch nicht erwähnt habe: Das Löschen des Ordners sowohl mit der von Total Commander genutzten Löschmethode (RemoveDirectory oder so) als auch mit SHFileOperation geht bestens.


Kleiner Nachtrag noch: Das Verschieben in den Papierkorb geht auch nicht mit Administratorrechten!
Post Reply