Como mover ficheiros que estejam actualmente em utilização

Traduções de Artigos Traduções de Artigos
Artigo: 140570 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Por vezes, aplicações Win32 necessário eliminar, mudar o nome ou mover ficheiros que estão actualmente a ser utilizados pelo sistema. Um exemplo comum é que programas de configuração necessita de remover próprios do disco rígido do utilizador quando forem terminar de configurar um pacote de software. Por vezes, estas também necessitam de mover controladores que estão actualmente a ser utilizados pelo sistema. Aplicações necessitam de ajuda do sistema operativo para eliminar ou mover estes ficheiros.

O Windows 95 e Windows NT cada fornecem um método único para ajudar a aplicações a remover, substituir ou mudar o nome de ficheiros e directórios que estão a ser utilizados. Apesar das duas plataformas diferem na forma como implementam estes métodos, ambos partilham uma estratégia global em que a aplicação Especifica os ficheiros para processar e o sistema processa-os quando este for reiniciado. Este artigo explica como aplicações podem utilizar o método fornecido por cada plataforma Windows.

Mais Informação

Mover ficheiros no Windows NT

Aplicações baseadas em Win32 em execução no Windows NT devem utilizar MoveFileEx() com o sinalizador MOVEFILE_DELAY_UNTIL_REBOOT para mover, substituir ou eliminar ficheiros e directórios actualmente a ser utilizados. Da próxima vez que o sistema é reiniciado, irá mover o programa de arranque do Windows NT, substituir ou eliminar os directórios e ficheiros especificados.

Para mover ou substituir um ficheiro ou directório que está a ser utilizado, uma aplicação tem de especificar os caminhos de uma origem e de destino no mesmo volume (por exemplo, unidade C:). Se o caminho de destino é um ficheiro existente, será substituído. Se o caminho de destino é um directório existente, não será substituído e caminhos de origem e destino permanecerá inalterados. Segue-se uma chamada de exemplo para mover ou substituir um ficheiro ou mover um directório:
   // Move szSrcFile to szDstFile next time system is rebooted
   MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
				
para eliminar um ficheiro ou directório, a aplicação tem definida o caminho de destino para NULL. Se o caminho de origem for um directório, este será removido apenas se estiver vazia. Tenha em atenção que se deve utilizar MoveFileEx() para remover ficheiros a partir de um directório, tem de reiniciar o computador para poder chamar MoveFileEx() para remover o directório. Aqui está um exemplo de como eliminar um ficheiro ou um directório vazio:
   // Delete szSrcFile next time system is rebooted
   MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
				

Mover ficheiros no Windows 95

O Windows 95 não implementa MoveFileEx(), mas fornece uma forma alternativa para todos os Win32, 16 bits baseado no Windows, baseados no MS DOS aplicações e mover, substituir ou eliminar ficheiros (mas não directórios) que estão actualmente em utilização. Esta capacidade é implementada através da secção [rename] de um ficheiro denominado Wininit.ini. Se estiver presente no directório do Windows Wininit.ini, Wininit.exe processa quando arranca o sistema. Depois de ter sido processado Wininit.ini, Wininit.exe muda-lo para Wininit.bak.

A sintaxe da secção [rename] é:
   DestinationFileName=SourceFileName
				
DestinationFileName SourceFileName tem de residir no mesmo volume e dever nomes curtos de ficheiro (8.3) Wininit.ini é processado antes do sistema de disco de modo protegido é carregado e nomes de ficheiro longos só estão disponíveis quando o sistema de disco de modo protegido está em execução. Ficheiros de origem e destino especificados no ficheiro Wininit.ini com nomes de ficheiro longos serão ignorados.

A secção [rename] pode ter várias linhas com um ficheiro por linha. Para eliminar um ficheiro, especifique NUL como o DestinationFileName. Eis 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
				
a primeira linha faz com que Temp.txt a ser eliminado. O segundo faz com que Existing.txt ser movida para um novo directório. A terceira faz com que Oldname.txt seja movido e mudar o nome. A quarta faz com que um ficheiro existente a ser substituídas por newfile.txt.

Aplicações não devem utilizar WritePrivateProfileString() ao escrever entradas à secção [rename] uma vez que podem existir várias linhas com DestinationFileName mesmo, especialmente se DestinationFileName "NUL." Em vez disso, devem adicionar entradas análise Wininit.ini e acrescentar as entradas para o fim da secção [rename].

NOTA: Utilize sempre uma pesquisa não sensível a maiúsculas e minúsculas para analisar Wininit.ini porque o título da secção [rename] e os nomes dos ficheiros nela pode ter qualquer combinação de letras maiúsculas e minúsculas.

As aplicações que utilizam Wininit.ini devem verificar a existência no directório do Windows. Se Wininit.ini estiver presente, em seguida, outra aplicação tem escrito-lo uma vez que o sistema foi reiniciado pela última vez. Por conseguinte, a aplicação deve abri-lo e adicionar entradas à secção [rename]. Se Wininit.ini não estiver presente, a aplicação deve criá-lo e adicionar à secção [rename]. Ao fazê-lo, garante que movimentos de outras aplicações não vai ser eliminados acidentalmente pela aplicação.

Para anular uma operação de mudança de nome de ficheiro antes do sistema é reiniciado, terá de remover a linha correspondente da secção [rename] do ficheiro Wininit.ini.

Propriedades

Artigo: 140570 - Última revisão: 21 de novembro de 2006 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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