Schreibgeschützte Datei löschen?
-
Ist es möglich eine schreibgeschützte Datei zu löschen?
Ich habe in der MSDN 3 Frunktionen zum Löschen von Dateien gefunden:
- remove
- _unlink
- deleteFileallerdings haben diese alle nur einen Parameter, für den Dateinamen, den man löschen möchte.
google hat mir auch nichts entsprechendes gebracht und die Forensuche auch nicht.
Unter dos könnte man es mit
del <Dateiname> /Fmachen, aber extra eine Konsole zum Löschen aufmachen ist doch irgenwie unschön, oder?
Ich habe es jetzt erstmal so gelöst:
SetFileAttributes(filename,FILE_ATTRIBUTE_NORMAL); DeleteFile(filename);Kennt jemand einen Befehl, mit dem ich die Datei direkt löschen kann?
Gruß Patrick
-
DeleteFile(filename);
-
war nicht so gemeint. das geht tatsächlich nicht ohne vorher SetFileAttributes. sorry.
-
@looooooooooool:
DeleteFile löscht keine schreibgeschützten Dateien.
Wenn man GetLastError aufruft, bekommt man den Fehlercode 5 --> Access Denied
-
Ja sorry dachte das funktioniert. Aber in der MSDN steht ja auch:
If the file is a read-only file, the function fails with ERROR_ACCESS_DENIED. To delete a read-only file, you must first remove the read-only attribute.
Was ist daran so schlimm wenn du ne Zeile mehr schreiben musst?
-
daran ist nichts schlimm.
ich habe mich bloß gewundert, warum es drei verschiedene Funktionen zum Löschen gibt und alle drei machen das gleiche
Und da ich das Attribut /F vom DOS Befehl del kenne, dachte ich, es gäbe vieleicht noch eine vierte "Löschfunktion", der man einen zweiten Parameter für Systemdateien, versteckte Dateien, schreibgeschützte Dateien, usw. mitgeben kann.
-
remove ist aus der C Standardbibliothek
DeleteFile ist aus der WinAPI
und _unlink ist ne Compilererweiterung (die dann auf anderen Compilern wahrscheinlich nicht funktioniert). (keine Ahnung warum es die gibt)
Und das del Tool von Windows wirds wahrscheinlich genauso wie du machen.