Função ReplaceFileA (winbase.h)
Substitui um arquivo por outro arquivo, com a opção de criar uma cópia de backup do arquivo original. O arquivo de substituição pressupõe o nome do arquivo substituído e sua identidade.
Sintaxe
BOOL ReplaceFileA(
[in] LPCSTR lpReplacedFileName,
[in] LPCSTR lpReplacementFileName,
[in, optional] LPCSTR lpBackupFileName,
[in] DWORD dwReplaceFlags,
LPVOID lpExclude,
LPVOID lpReserved
);
Parâmetros
[in] lpReplacedFileName
O nome do arquivo a ser substituído.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
Esse arquivo é aberto com os direitos de acesso GENERIC_READ, DELETEe SYNCHRONIZE. O modo de compartilhamento é FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.
O chamador deve ter acesso de gravação ao arquivo a ser substituído. Para obter mais informações, consulte de Segurança de Arquivos e Direitos de Acesso.
[in] lpReplacementFileName
O nome do arquivo que substituirá o arquivo lpReplacedFileName.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
A função tenta abrir esse arquivo com o SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETEe WRITE_DAC direitos de acesso para que ele possa preservar todos os atributos e ACLs. Se isso falhar, a função tentará abrir o arquivo com os direitos de acesso SYNCHRONIZE, GENERIC_READ, DELETEe WRITE_DAC. Nenhum modo de compartilhamento é especificado.
[in, optional] lpBackupFileName
O nome do arquivo que servirá como uma cópia de backup do arquivo lpReplacedFileName. Se esse parâmetro for NULL, nenhum arquivo de backup será criado. Consulte a seção Comentários para obter detalhes de implementação no arquivo de backup.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
[in] dwReplaceFlags
As opções de substituição. Esse parâmetro pode ser um ou mais dos valores a seguir.
lpExclude
Reservado para uso futuro.
lpReserved
Reservado para uso futuro.
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. A seguir estão possíveis códigos de erro para essa função.
Código/valor de retorno | Descrição |
---|---|
|
Não foi possível renomear o arquivo de substituição. Se lpBackupFileName tiver sido especificado, os arquivos substituídos e de substituição manterão seus nomes de arquivo originais. Caso contrário, o arquivo substituído não existe mais e o arquivo de substituição existe em seu nome original. |
|
Não foi possível mover o arquivo de substituição. O arquivo de substituição ainda existe em seu nome original; no entanto, herdou os fluxos de arquivo e os atributos do arquivo que está substituindo. O arquivo a ser substituído ainda existe com um nome diferente. Se lpBackupFileName for especificado, ele será o nome do arquivo substituído. |
|
O arquivo substituído não pôde ser excluído. Os arquivos substituídos e de substituição mantêm seus nomes de arquivo originais. |
Se qualquer outro erro for retornado, como ERROR_INVALID_PARAMETER, os arquivos substituídos e de substituição manterão seus nomes de arquivo originais. Nesse cenário, um arquivo de backup não existe e não é garantido que o arquivo de substituição terá herdado todos os atributos e fluxos do arquivo substituído.
Observações
- Hora de criação
- Nome do arquivo curto
- Identificador de objeto
- DACLs
- Atributos de recurso de segurança
- Encriptação
- Compressão
- Fluxos nomeados ainda não estão no arquivo de substituição
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Atributos de recursos de segurança (ATTRIBUTE_SECURITY_INFORMATION) para o arquivo original não serão preservados até o Windows 8 e o Windows Server 2012.
Se o arquivo de substituição estiver protegido usando de Apagamento Seletivo, o arquivo substituído será protegido pela ID corporativa do arquivo de substituição.
O arquivo de backup, o arquivo substituído e o arquivo de substituição devem residir no mesmo volume.
Para excluir ou renomear um arquivo, você deve ter permissão de exclusão no arquivo ou excluir a permissão filho no diretório pai. Se você configurar um diretório com todo o acesso, exceto excluir e excluir filho e os DACLs de novos arquivos forem herdados, você poderá criar um arquivo sem poder excluí-lo. No entanto, você pode criar um arquivo e obterá todo o acesso solicitado no identificador retornado a você no momento em que criar o arquivo. Se você solicitou a permissão de exclusão no momento em que criou o arquivo, poderá excluir ou renomear o arquivo com esse identificador, mas não com qualquer outro.
Nota
O cabeçalho winbase.h define ReplaceFile como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | winbase.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |
Consulte também
Funções de gerenciamento de arquivos
movefile