Condividi tramite


Funzione ReplaceFileFromAppW (fileapifromapp.h)

Sostituisce un file con un altro file, con l'opzione di creazione di una copia di backup del file originale. Il comportamento di questa funzione è identico a ReplaceFile, ad eccezione del fatto che questa funzione rispetta il modello di sicurezza delle app piattaforma UWP (Universal Windows Platform).

Sintassi

WINSTORAGEAPI BOOL ReplaceFileFromAppW(
  LPCWSTR lpReplacedFileName,
  LPCWSTR lpReplacementFileName,
  LPCWSTR lpBackupFileName,
  DWORD   dwReplaceFlags,
  LPVOID  lpExclude,
  LPVOID  lpReserved
) noexcept;

Parametri

lpReplacedFileName

Per informazioni sul rifiuto esplicito della limitazione MAX_PATH senza pre sospeso "\\?\", vedere la sezione "Limitazione massima lunghezza percorso" di Denominazione di file, percorsi e spazi dei nomi per informazioni dettagliate.

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.

lpReplacementFileName

Nome del file che sostituirà il file lpReplacedFileName .

Per informazioni sul rifiuto esplicito della limitazione MAX_PATH senza pre sospeso "\\?\", vedere la sezione "Limitazione massima lunghezza percorso" di Denominazione di file, percorsi e spazi dei nomi per informazioni dettagliate.

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.

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 informazioni sul rifiuto esplicito della limitazione MAX_PATH senza pre sospeso "\\?\", vedere la sezione "Limitazione massima lunghezza percorso" di Denominazione di file, percorsi e spazi dei nomi per informazioni dettagliate.

dwReplaceFlags

Opzioni di sostituzione. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
REPLACEFILE_WRITE_THROUGH 0x00000001

Questo valore non è supportato.

REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002

Ignora gli errori che si verificano durante l'unione di informazioni, ad esempio attributi e ACL, dal file sostituito al file sostitutivo. Pertanto, se si specifica questo flag e non si dispone di accesso WRITE_DAC , la funzione ha esito positivo, ma gli elenchi di controllo di accesso non vengono mantenuti.

REPLACEFILE_IGNORE_ACL_ERRORS 0x00000004

Ignora gli errori che si verificano durante l'unione delle informazioni ACL dal file sostituito al file sostitutivo. Pertanto, se si specifica questo flag e non si dispone di accesso WRITE_DAC , la funzione ha esito positivo, ma gli elenchi di controllo di accesso non vengono mantenuti. Per compilare un'applicazione che usa questo valore, definire la macro _WIN32_WINNT come 0x0600 o versione successiva.

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
ERROR_UNABLE_TO_MOVE_REPLACEMENT 1176 (0x498)

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.

ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 1177 (0x499)

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.

ERROR_UNABLE_TO_REMOVE_REPLACED 1175 (0x497)

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.

Requisiti

   
Client minimo supportato Windows 10, versione 1803
Intestazione fileapifromapp.h