Funzione ReplaceFileA (winbase.h)
Sostituisce un file con un altro file, con la possibilità di creare una copia di backup del file originale. Il file di sostituzione presuppone il nome del file sostituito e la relativa identità.
Sintassi
BOOL ReplaceFileA(
[in] LPCSTR lpReplacedFileName,
[in] LPCSTR lpReplacementFileName,
[in, optional] LPCSTR lpBackupFileName,
[in] DWORD dwReplaceFlags,
LPVOID lpExclude,
LPVOID lpReserved
);
Parametri
[in] lpReplacedFileName
Nome del file da sostituire.
Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, anteporre "\\?\" al percorso. Per altre informazioni, vedere denominazione di file, percorsi e spazi dei nomi.
Mancia
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente alla rimozione della limitazione MAX_PATH senza anteporre "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
Questo file viene aperto con i diritti di accesso GENERIC_READ, DELETEe SYNCHRONIZE. La modalità di condivisione è FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.
Il chiamante deve avere accesso in scrittura al file da sostituire. Per altre informazioni, vedere File Security and Access Rights.
[in] lpReplacementFileName
Nome del file che sostituirà il file lpReplacedFileName.
Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, anteporre "\\?\" al percorso. Per altre informazioni, vedere denominazione di file, percorsi e spazi dei nomi.
Mancia
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente alla rimozione della limitazione MAX_PATH senza anteporre "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
La funzione tenta di aprire questo file con il SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETEe i diritti di accesso WRITE_DAC in modo che possa mantenere tutti gli attributi e gli ACL. In caso di esito negativo, la funzione tenta di aprire il file con i diritti di accesso
[in, optional] lpBackupFileName
Nome del file che fungerà da copia di backup del file lpReplacedFileName. Se questo parametro è NULL, non viene creato alcun file di backup. Per informazioni dettagliate sull'implementazione del file di backup, vedere la sezione Osservazioni.
Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, anteporre "\\?\" al percorso. Per altre informazioni, vedere denominazione di file, percorsi e spazi dei nomi.
Mancia
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente alla rimozione della limitazione MAX_PATH senza anteporre "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
[in] dwReplaceFlags
Opzioni di sostituzione. Questo parametro può essere uno o più dei valori seguenti.
lpExclude
Riservato per uso futuro.
lpReserved
Riservato per uso futuro.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError. Di seguito sono riportati i possibili codici di errore per questa funzione.
Codice/valore restituito | Descrizione |
---|---|
|
Impossibile rinominare il file di sostituzione. Se è stato specificato lpBackupFileName, i file sostituiti e sostitutivi mantengono i nomi dei file originali. In caso contrario, il file sostituito non esiste più e il file di sostituzione esiste sotto il nome originale. |
|
Impossibile spostare il file di sostituzione. Il file sostitutivo esiste ancora sotto il nome originale; Tuttavia, ha ereditato i flussi di file e gli attributi dal file che sta sostituendo. Il file da sostituire esiste ancora con un nome diverso. Se viene specificato lpBackupFileName, sarà il nome del file sostituito. |
|
Impossibile eliminare il file sostituito. I file sostituiti e sostitutivi mantengono i nomi di file originali. |
Se viene restituito un altro errore, ad esempio ERROR_INVALID_PARAMETER, i file sostituiti e sostitutivi manterranno i nomi di file originali. In questo scenario, un file di backup non esiste e non è garantito che il file di sostituzione abbia ereditato tutti gli attributi e i flussi del file sostituito.
Osservazioni
- Ora di creazione
- Nome file breve
- Identificatore dell'oggetto
- DACLs
- Attributi delle risorse di sicurezza
- Codifica
- Compressione
- Flussi denominati non già presenti nel file di sostituzione
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Attributi delle risorse di sicurezza (ATTRIBUTE_SECURITY_INFORMATION) per il file originale non vengono mantenuti fino a Windows 8 e Windows Server 2012.
Se il file sostitutivo è protetto tramite cancellazione selettiva, il file sostituito verrà protetto dall'ID organizzazione del file sostitutivo.
Il file di backup, il file sostituito e il file di sostituzione devono trovarsi tutti nello stesso volume.
Per eliminare o rinominare un file, è necessario disporre dell'autorizzazione di eliminazione per il file o eliminare l'autorizzazione figlio nella directory padre. Se si configura una directory con tutti gli accessi, ad eccezione dell'eliminazione e dell'eliminazione figlio e vengono ereditati gli elenchi DACL dei nuovi file, sarà possibile creare un file senza poterlo eliminare. Tuttavia, è possibile creare un file e si otterrà tutto l'accesso richiesto sull'handle restituito al momento della creazione del file. Se è stata richiesta l'autorizzazione di eliminazione al momento della creazione del file, è possibile eliminare o rinominare il file con tale handle ma non con altri.
Nota
L'intestazione winbase.h definisce ReplaceFile come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [app desktop | App UWP] |
server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
winbase.h (include Windows.h) |
libreria |
Kernel32.lib |
dll | Kernel32.dll |