ReplaceFileA-Funktion (winbase.h)
Ersetzt eine Datei durch eine andere Datei mit der Option, eine Sicherungskopie der ursprünglichen Datei zu erstellen. Die Ersatzdatei setzt den Namen der ersetzten Datei und deren Identität voraus.
Syntax
BOOL ReplaceFileA(
[in] LPCSTR lpReplacedFileName,
[in] LPCSTR lpReplacementFileName,
[in, optional] LPCSTR lpBackupFileName,
[in] DWORD dwReplaceFlags,
LPVOID lpExclude,
LPVOID lpReserved
);
Parameter
[in] lpReplacedFileName
Der Name der zu ersetzenden Datei.
Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um dieses Limit auf 32.767 breite Zeichen zu erweitern, müssen Sie dem Pfad "\\?\" voranstellen. 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 entfernen, ohne "\\?\" vorauszustellen. Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbegrenzung" unter Benennung von Dateien, Pfaden und Namespaces .
Diese Datei wird mit den Zugriffsberechtigungen GENERIC_READ, DELETE und SYNCHRONIZE geöffnet. Der Freigabemodus wird FILE_SHARE_WRITE FILE_SHARE_DELETE | | FILE_SHARE_READ.
Der Aufrufer muss Schreibzugriff auf die zu ersetzende Datei haben. Weitere Informationen finden Sie unter Dateisicherheit und Zugriffsrechte.
[in] lpReplacementFileName
Der Name der Datei, die die lpReplacedFileName-Datei ersetzt.
Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um dieses Limit auf 32.767 breite Zeichen zu erweitern, müssen Sie dem Pfad "\\?\" voranstellen. 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 entfernen, ohne "\\?\" vorauszustellen. Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbegrenzung" unter Benennung von Dateien, Pfaden und Namespaces .
Die Funktion versucht, diese Datei mit den Zugriffsrechten SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETE und WRITE_DAC zu öffnen, sodass alle Attribute und ACLs beibehalten werden können. Wenn dies fehlschlägt, versucht die Funktion, die Datei mit den Zugriffsrechten SYNCHRONIZE, GENERIC_READ, DELETE und WRITE_DAC zu öffnen. Es ist kein Freigabemodus angegeben.
[in, optional] lpBackupFileName
Der Name der Datei, die als Sicherungskopie der lpReplacedFileName-Datei dient. Wenn dieser Parameter NULL ist, wird keine Sicherungsdatei erstellt. Details zur Implementierung der Sicherungsdatei finden Sie im Abschnitt Hinweise.
Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um dieses Limit auf 32.767 breite Zeichen zu erweitern, müssen Sie dem Pfad "\\?\" voranstellen. 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 entfernen, ohne "\\?\" vorauszustellen. Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbegrenzung" unter Benennung von Dateien, Pfaden und Namespaces .
[in] dwReplaceFlags
Die Ersatzoptionen. Bei diesem Parameter kann es sich um einen oder mehrere der folgenden Werte handeln.
lpExclude
Für zukünftige Verwendung reserviert.
lpReserved
Für zukünftige Verwendung reserviert.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Im Folgenden finden Sie mögliche Fehlercodes für diese Funktion.
Rückgabecode/-wert | BESCHREIBUNG |
---|---|
|
Die Ersatzdatei konnte nicht umbenannt werden. Wenn lpBackupFileName angegeben wurde, behalten die ersetzten und ersetzungsdateien ihre ursprünglichen Dateinamen bei. Andernfalls ist die ersetzte Datei nicht mehr vorhanden, und die Ersatzdatei ist unter ihrem ursprünglichen Namen vorhanden. |
|
Die Ersatzdatei konnte nicht verschoben werden. Die Ersatzdatei ist weiterhin unter ihrem ursprünglichen Namen vorhanden. Die Dateidatenströme und -attribute wurden jedoch von der ersetzten Datei geerbt. Die zu ersetzende Datei ist weiterhin mit einem anderen Namen vorhanden. Wenn lpBackupFileName angegeben wird, ist dies der Name der ersetzten Datei. |
|
Die ersetzte Datei konnte nicht gelöscht werden. Die ersetzten dateien und ersatzdateien behalten ihre ursprünglichen Dateinamen bei. |
Wenn ein anderer Fehler zurückgegeben wird, z. B. ERROR_INVALID_PARAMETER, behalten die ersetzten dateien und die Ersetzungsdateien ihre ursprünglichen Dateinamen bei. In diesem Szenario ist keine Sicherungsdatei vorhanden, und es ist nicht garantiert, dass die Ersatzdatei alle Attribute und Streams der ersetzten Datei geerbt hat.
Bemerkungen
- Erstellungszeitpunkt
- Kurzer Dateiname
- Objektbezeichner
- DACLs
- Sicherheitsressourcenattribute
- Verschlüsselung
- Komprimierung
- Benannte Streams, die noch nicht in der Ersatzdatei enthalten sind
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Sicherheitsressourcenattribute (ATTRIBUTE_SECURITY_INFORMATION) für die ursprüngliche Datei werden erst beibehalten, wenn Windows 8 und Windows Server 2012.
Wenn die Ersatzdatei durch selektives Zurücksetzen geschützt ist, wird die ersetzte Datei durch die Enterprise-ID der Ersatzdatei geschützt.
Die Sicherungsdatei, die ersetzte Datei und die Ersatzdatei müssen sich auf demselben Volume befinden.
Um eine Datei zu löschen oder umzubenennen, müssen Sie entweder über die Löschberechtigung für die Datei oder über die untergeordnete Berechtigung im übergeordneten Verzeichnis verfügen. Wenn Sie ein Verzeichnis mit allen Zugriffen mit Ausnahme des untergeordneten Lösch- und Löschvorgangs einrichten und die DACLs neuer Dateien geerbt werden, sollten Sie eine Datei erstellen können, ohne sie löschen zu können. Sie können dann jedoch eine Datei erstellen, und Sie erhalten den gesamten Zugriff, den Sie zum Zeitpunkt der Erstellung der Datei anfordern, auf das Handle zurückgegeben. Wenn Sie zum Zeitpunkt der Erstellung der Datei die Löschberechtigung angefordert haben, können Sie die Datei mit diesem Handle löschen oder umbenennen, aber nicht mit einem anderen.
Hinweis
Der winbase.h-Header definiert ReplaceFile als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
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 (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |