Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Löscht eine vorhandene Datei.
Verwenden Sie die DeleteFileTransacted-Funktion , um diesen Vorgang als transacted-Vorgang auszuführen.
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 breite Zeichen zu erweitern, stellen Sie "\\?\" dem Pfad voran. Weitere Informationen finden Sie unter Benennen von Dateien, Pfaden und Namespaces.
Tip
Ab Windows 10, Version 1607, können Sie sich anmelden, um die MAX_PATH Einschränkung zu entfernen, ohne "\\?\". Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbeschränkung" Benennungsdateien, Pfade und Namespaces.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null (0). Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.
Bemerkungen
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.
In der folgenden Liste werden einige Tipps zum Löschen, Entfernen oder Schließen von Dateien aufgeführt:
- 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 untergeordneter Elemente im übergeordneten Verzeichnis verfügen.
- Verwenden Sie die SHFileOperation-Funktion , um die Dateien in einem Verzeichnis rekursiv zu löschen.
- Verwenden Sie die RemoveDirectory-Funktion , um ein leeres Verzeichnis zu entfernen.
- Verwenden Sie die CloseHandle-Funktion , um eine geöffnete Datei zu schließen.
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 geöffnete Handles enthält, die ohne FILE_SHARE_DELETE geöffnet wurden oder die speicherzuordnungen sind.
Die DeleteFile-Funktion markiert eine Datei zum Löschen beim Schließen. Daher tritt das Löschen der Datei erst auf, wenn das letzte Handle für die Datei geschlossen wird. Nachfolgende Aufrufe von CreateFile zum Öffnen der Datei schlagen mit ERROR_ACCESS_DENIED fehl.
Verhalten symbolischer Verknüpfungen –
Wenn der Pfad auf eine symbolische Verknüpfung zeigt, wird die symbolische Verknüpfung gelöscht, nicht das Ziel. Zum Löschen eines Ziels müssen Sie CreateFile aufrufen und FILE_FLAG_DELETE_ON_CLOSE angeben.
In Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
| Technologie | Unterstützt |
|---|---|
| Server Message Block (SMB) 3.0-Protokoll | Ja. |
| SMB 3.0 Transparent Failover (TFO) | Ja. |
| SMB 3.0 mit Skalierungsdateifreigaben (SO) | Ja. |
| Freigegebenes Clustervolumedateisystem (CsvFS) | Ja. |
| Resilient File System (ReFS) | Ja. |
Beispiele
Ein Beispiel finden Sie unter Sperren und Entsperren von Bytebereichen in Dateien.
Requirements
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows XP [Desktop-Apps | UWP-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
| Zielplattform | Windows |
| Header | winbase.h (enthalten Windows.h) |
| Bibliothek | Kernel32.lib |
| DLL | Kernel32.dll |