Como mover arquivos que estão atualmente em uso

Traduções deste artigo Traduções deste artigo
ID do artigo: 140570 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Às vezes, aplicativos do Win32 precisam excluir, renomear ou mover arquivos que estão sendo usados pelo sistema. Um exemplo comum é que programas de instalação precisam remover próprios de disco rígido do usuário quando ela terminar de configurar um pacote de software. Às vezes, eles também precisarão mover drivers de dispositivo que estão sendo usados pelo sistema. Aplicativos precisam de Ajuda do sistema operacional para excluir ou mover esses arquivos.

O Windows 95 e Windows NT cada fornecem um método exclusivo para ajudar aplicativos para remover, substituir ou renomear arquivos e pastas que estão em uso. Embora as duas plataformas diferem em como eles implementam esses métodos, ambos compartilham uma estratégia geral de onde o aplicativo especifica quais arquivos para processar e o sistema processa quando ele for reinicializado. Este artigo explica como aplicativos podem usar o método fornecido por cada plataforma Windows.

Mais Informações

Movendo arquivos no Windows NT

Aplicativos baseados em Win32 que esteja sendo executado no Windows NT devem usar MoveFileEx() com o sinalizador MOVEFILE_DELAY_UNTIL_REBOOT para mover, substituir ou excluir arquivos e diretórios sendo usados. Na próxima vez que o sistema é reinicializado, o programa de inicialização do Windows NT irá mover, substituir ou excluir os arquivos especificados e diretórios.

Para mover ou substituir um arquivo ou pasta que está em uso, um aplicativo especifique caminho de uma origem e de destino no mesmo volume (por exemplo, unidade C:). Se o caminho de destino for um arquivo existente, ele será substituído. Se o caminho de destino é um diretório existente, ele não será substituído e caminhos de origem e de destino permanecerá inalterados. Aqui está uma chamada de exemplo para mover ou substituir um arquivo ou mover um diretório:
   // Move szSrcFile to szDstFile next time system is rebooted
   MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
				
para excluir um arquivo ou pasta, o aplicativo deve definir o caminho de destino para NULL. Se o caminho de origem for um diretório, ele será removido apenas se ele estiver vazio. Observe que se você deve usar MoveFileEx() para remover arquivos de um diretório, você deve reinicializar o computador que você pode chamar MoveFileEx() para remover o diretório. Aqui está um exemplo de como excluir um arquivo ou um diretório vazio:
   // Delete szSrcFile next time system is rebooted
   MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
				

Movendo arquivos no Windows 95

Windows 95 não implementa MoveFileEx(), mas fornece uma maneira alternativa para todos os baseados no Win32 16 bits baseado no Windows e baseados em MS DOS aplicativos mover, substituir ou excluir arquivos (mas não pastas) que estão atualmente em uso. Esse recurso é implementado através da seção [Renomear] de um arquivo chamado Wininit.ini. Se Wininit.ini estiver presente no diretório do Windows, Wininit.exe processa quando o sistema é inicializado. Depois que tiver sido processada Wininit.ini, Wininit.exe renomeia a Wininit.bak.

A sintaxe da seção [Renomear] é:
   DestinationFileName=SourceFileName
				
DestinationFileName SourceFileName deve residir no mesmo volume e ser nomes de arquivo (8.3) curto porque Wininit.ini é processado antes do sistema de modo protegido de disco é carregado e nomes extensos de arquivos estão disponível somente quando o sistema de disco de modo protegido está sendo executado. Arquivos de origem e destino especificados no arquivo Wininit.ini com nomes extensos de arquivos são ignorados.

A seção [Renomear] pode ter várias linhas com um arquivo por linha. Para excluir um arquivo, especifique NUL como o DestinationFileName. Aqui estão alguns exemplos de entrada:
   [rename]
   NUL=C:\TEMP.TXT
   C:\NEW_DIR\EXISTING.TXT=C:\EXISTING.TXT
   C:\NEW_DIR\NEWNAME.TXT=C:\OLDNAME.TXT
   C:\EXISTING.TXT=C:\TEMP\NEWFILE.TXT
				
Temp.txt a ser excluído faz com que a primeira linha. O segundo faz Existing.txt a serem movidos para um novo diretório. A terceira causa oldname.txt seja movido e renomeado. A quarta faz com que um arquivo existente seja substituído por Newfile.txt.

Aplicativos não devem usar WritePrivateProfileString() para gravar entradas à seção [Renomear] porque pode haver várias linhas com DestinationFileName mesmo, especialmente se DestinationFileName "NUL." Em vez disso, eles devem adicionar entradas análise Wininit.ini e acrescentando as entradas para o final da seção [Renomear].

Observação: Sempre use uma pesquisa não diferencia maiúsculas de minúsculas para analisar Wininit.ini porque o título da seção [Renomear] e os nomes de arquivos dentro dela pode ter qualquer combinação de maiúsculas e minúsculas.

Aplicativos que usam Wininit.ini devem verificar sua existência no diretório do Windows. Se houver Wininit.ini, em seguida, outro aplicativo escreveu a ele desde que o sistema foi reiniciado pela última vez. Portanto, o aplicativo deve abri-lo e adicionar entradas à seção [Renomear]. Se Wininit.ini não estiver presente, o aplicativo deve criá-lo e adicionar à seção [Renomear]. Isso garante que entradas de outros aplicativos não serão excluídas acidentalmente pelo seu aplicativo.

Para desfazer uma operação de renomeação de arquivo antes do sistema for reinicializado, você deve remover a linha correspondente da seção [Renomear] do arquivo Wininit.ini.

Propriedades

ID do artigo: 140570 - Última revisão: terça-feira, 21 de novembro de 2006 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Interface de Programação de Aplicativos do Microsoft Win32 nas seguintes plataformas
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows Millennium Edition
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows XP
Palavras-chave: 
kbmt kbapi kbfileio kbhowto kbkernbase kbprogramming KB140570 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 140570

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com