Você está offline; aguardando reconexão

Como mover arquivos que estão atualmente em uso

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
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.
atualizar o programa de instalação instalação

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 140570 - Última Revisão: 11/21/2006 15:50:08 - Revisão: 4.3

Interface de Programação de Aplicativos do Microsoft Win32

  • kbmt kbapi kbfileio kbhowto kbkernbase kbprogramming KB140570 KbMtpt
Comentários