Freigeben über


DeleteFile-Funktion (winbase.h)

Löscht eine vorhandene Datei.

Um diesen Vorgang als transaktionierten Vorgang auszuführen, verwenden Sie die DeleteFileTransacted-Funktion .

Syntax

BOOL DeleteFile(
  [in] LPCTSTR lpFileName
);

Parameter

[in] lpFileName

Der Name der zu löschenden Datei.

Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um diesen Grenzwert auf 32.767 Breitzeichen zu erweitern, stellen Sie dem Pfad "\\?\" voran. Weitere Informationen finden Sie unter Benennen von Dateien, Pfaden und Namespaces.

Tipp

Ab Windows 10 Version 1607 können Sie die MAX_PATH-Einschränkung aufheben, ohne "\\?\" vorab ausstehen zu müssen. Ausführliche Informationen finden Sie im Abschnitt "Maximale Längenbeschränkung für Pfade" unter Benennen von Dateien, Pfaden und Namespaces .

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn eine Anwendung versucht, eine Datei zu löschen, die nicht vorhanden ist, schlägt die DeleteFile-Funktion mit ERROR_FILE_NOT_FOUND fehl. Wenn es sich bei der Datei um eine schreibgeschützte Datei handelt, schlägt die Funktion mit ERROR_ACCESS_DENIED fehl.

Die folgende Liste enthält einige Tipps zum Löschen, Entfernen oder Schließen von Dateien:

  • Um eine schreibgeschützte Datei zu löschen, müssen Sie zuerst das schreibgeschützte Attribut entfernen.
  • Um eine Datei zu löschen oder umzubenennen, müssen Sie entweder über die Berechtigung zum Löschen der Datei oder über die Berechtigung zum Löschen einer untergeordneten Datei im übergeordneten Verzeichnis verfügen.
  • Verwenden Sie die ShFileOperation-Funktion , um die Dateien in einem Verzeichnis rekursiv zu löschen.
  • Um ein leeres Verzeichnis zu entfernen, verwenden Sie die RemoveDirectory-Funktion .
  • Um eine geöffnete Datei zu schließen, verwenden Sie die CloseHandle-Funktion .
Wenn Sie ein Verzeichnis mit allen Zugriffen mit Ausnahme des untergeordneten Lösch- und Löschvorgangs einrichten und die Zugriffssteuerungslisten (Access Control Lists, ACL) neuer Dateien geerbt werden, können Sie eine Datei erstellen, ohne sie löschen zu können. Dann können Sie jedoch eine Datei erstellen und dann den gesamten Zugriff erhalten, den Sie auf das Handle anfordern, der ihnen beim Erstellen der Datei zurückgegeben wird.

Wenn Sie zum Zeitpunkt der Erstellung einer Datei die Löschberechtigung anfordern, können Sie die Datei mit diesem Handle löschen oder umbenennen, jedoch nicht mit einem anderen Handle. Weitere Informationen finden Sie unter Dateisicherheit und Zugriffsrechte.

Die DeleteFile-Funktion schlägt fehl, wenn eine Anwendung versucht, eine Datei zu löschen, die andere Handles für normale E/A-Vorgänge oder als Speicherzuordnungsdatei geöffnet hat (FILE_SHARE_DELETE beim Öffnen anderer Handles angegeben werden muss).

Die DeleteFile-Funktion markiert eine Datei zum Löschen beim Schließen. Daher erfolgt das Löschen der Datei erst, wenn das letzte Handle für die Datei geschlossen wurde. Nachfolgende Aufrufe von CreateFile zum Öffnen der Datei schlagen mit ERROR_ACCESS_DENIED fehl.

Verhalten symbolischer Verknüpfungen –

Wenn der Pfad auf einen symbolischen Link verweist, wird der symbolische Link gelöscht, nicht das Ziel. Um ein Ziel zu löschen, müssen Sie CreateFile aufrufen und FILE_FLAG_DELETE_ON_CLOSE angeben.

Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) Ja
SMB 3.0 Transparent Failover (TFO) Ja
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) Ja
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja
 

Beispiele

Ein Beispiel finden Sie unter Sperren und Entsperren von Bytebereichen in Dateien.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CloseHandle

CreateFile

DeleteFileTransacted

Dateiverwaltungsfunktionen

Symbolische Links