Funzione ReplaceFileA (winbase.h)
Sostituisce un file con un altro file, con l'opzione di creazione di 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, prependo "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.
Suggerimento
A partire da Windows 10, versione 1607, è possibile scegliere di rimuovere la limitazione MAX_PATH senza pre sospeso "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima lunghezza percorso" di nomi, nomi, percorsi e spazi dei nomi .
Questo file viene aperto con i diritti di accesso GENERIC_READ, DELETE e SYNC . 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 Sicurezza file e diritti di accesso.
[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, prependo "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.
Suggerimento
A partire da Windows 10, versione 1607, è possibile scegliere di rimuovere la limitazione MAX_PATH senza pre sospeso "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima lunghezza percorso" di nomi, nomi, percorsi e spazi dei nomi .
La funzione tenta di aprire questo file con SYNC, GENERIC_READ, GENERIC_WRITE, DELETE e WRITE_DAC diritti di accesso in modo che possa mantenere tutti gli attributi e gli elenchi di controllo di accesso. In caso contrario, la funzione tenta di aprire il file con SYNC,GENERIC_READ, DELETE e WRITE_DAC diritti di accesso. Non è specificata alcuna modalità di condivisione.
[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, prependo "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.
Suggerimento
A partire da Windows 10, versione 1607, è possibile scegliere di rimuovere la limitazione MAX_PATH senza pre sospeso "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima lunghezza percorso" di nomi, nomi, percorsi e spazi dei nomi .
[in] dwReplaceFlags
Opzioni di sostituzione. Questo parametro può essere uno o più dei valori seguenti.
lpExclude
Riservato per usi futuri.
lpReserved
Riservato per usi futuri.
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 informazioni dettagliate sull'errore, chiamare GetLastError. Di seguito sono riportati i codici di errore possibili per questa funzione.
Codice/valore restituito | Descrizione |
---|---|
|
Impossibile rinominare il file di sostituzione. Se lpBackupFileName è stato specificato, i file sostituiti e sostitutivi mantengono i nomi di 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 originali dei file. |
Se viene restituito qualsiasi altro errore, ad esempio ERROR_INVALID_PARAMETER, i file sostituiti e sostitutivi manterranno i relativi 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.
Commenti
- Tempo di creazione
- Nome file breve
- Identificatori di oggetto
- DACL
- Attributi delle risorse di sicurezza
- Crittografia
- Compressione
- Flussi denominati non già nel file di sostituzione
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Gli 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 di sostituzione è protetto tramite cancellazione selettiva, il file sostituito sarà protetto dall'ID organizzazione del file sostitutivo.
Il file di backup, il file sostituito e il file sostitutivo devono risiedere 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 tutto l'accesso, ad eccezione dell'eliminazione e dell'eliminazione figlio e le dll DAC dei nuovi file vengono ereditate, è consigliabile essere in grado di creare un file senza poter eliminarlo. Tuttavia, è possibile creare un file e si otterrà tutto l'accesso richiesto nell'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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | winbase.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |