Freigeben über


CopyFile-Funktion (winbase.h)

Kopiert eine vorhandene Datei in eine neue Datei.

Die CopyFileEx-Funktion bietet zwei zusätzliche Funktionen. CopyFileEx kann eine angegebene Rückruffunktion jedes Mal aufrufen, wenn ein Teil des Kopiervorgangs abgeschlossen ist, und CopyFileEx kann während des Kopiervorgangs abgebrochen werden.

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

Syntax

BOOL CopyFile(
  [in] LPCTSTR lpExistingFileName,
  [in] LPCTSTR lpNewFileName,
  [in] BOOL    bFailIfExists
);

Parameter

[in] lpExistingFileName

Der Name einer vorhandenen 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 .

Wenn lpExistingFileName nicht vorhanden ist, schlägt CopyFile fehl, und GetLastError gibt ERROR_FILE_NOT_FOUND zurück.

[in] lpNewFileName

Der Name der neuen 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 .

[in] bFailIfExists

Wenn dieser Parameter TRUE ist und die von lpNewFileName angegebene neue Datei bereits vorhanden ist, schlägt die Funktion fehl. Wenn dieser Parameter FALSE ist und die neue Datei bereits vorhanden ist, überschreibt die Funktion die vorhandene Datei und ist erfolgreich.

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.

Hinweise

Die Sicherheitsressourceneigenschaften (ATTRIBUTE_SECURITY_INFORMATION) für die vorhandene Datei werden in die neue Datei kopiert.

Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Sicherheitsressourceneigenschaften für die vorhandene Datei werden erst Windows 8 und Windows Server 2012 in die neue Datei kopiert.

Dateiattribute für die vorhandene Datei werden in die neue Datei kopiert. Wenn z. B. eine vorhandene Datei über das attribut FILE_ATTRIBUTE_READONLY datei verfügt, wird eine Kopie, die durch einen Aufruf von CopyFile erstellt wurde, auch das attribut FILE_ATTRIBUTE_READONLY datei aufweisen. Weitere Informationen finden Sie unter Abrufen und Ändern von Dateiattributen.

Diese Funktion schlägt mit ERROR_ACCESS_DENIED fehl, wenn die Zieldatei bereits vorhanden ist und das FILE_ATTRIBUTE_HIDDEN - oder FILE_ATTRIBUTE_READONLY-Attribut festgelegt ist.

Wenn CopyFile zum Kopieren einer verschlüsselten Datei verwendet wird, wird versucht, die Zieldatei mit den Schlüsseln zu verschlüsseln, die bei der Verschlüsselung der Quelldatei verwendet werden. Wenn dies nicht möglich ist, versucht diese Funktion, die Zieldatei mit Standardschlüsseln zu verschlüsseln. Wenn keine dieser Methoden ausgeführt werden kann, schlägt CopyFile mit einem ERROR_ENCRYPTION_FAILED Fehlercode fehl.

Verhalten symbolischer Verknüpfungen: Wenn es sich bei der Quelldatei um einen symbolischen Link handelt, ist die kopierte Datei das Ziel des symbolischen Links.

Wenn die Zieldatei bereits vorhanden ist und ein symbolischer Link ist, wird das Ziel des symbolischen Links von der Quelldatei überschrieben.

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 Abrufen und Ändern von Dateiattributen.

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 (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CopyFileEx

CopyFileTransacted

CreateFile

Dateiattributskonstanten

Dateiverwaltungsfunktionen

MoveFile

Symbolische Links