Cómo mover los archivos que están actualmente en uso

Seleccione idioma Seleccione idioma
Id. de artículo: 140570 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

A veces las aplicaciones de Win32 deben eliminar, cambiar el nombre o mover los archivos que se utilizan actualmente por el sistema. Un ejemplo común es que los programas de instalación necesitan quitar a sí mismos de disco duro del usuario cuando hayan terminado de configurar un paquete de software. A veces, también necesitan mover controladores de dispositivos que están actualmente siendo utilizados por el sistema. Las aplicaciones necesitan ayuda del sistema operativo para eliminar o mover estos archivos.

Windows 95 y Windows NT cada proporcionan un método único para ayudar a las aplicaciones para quitar, reemplazar o cambiar el nombre archivos y directorios que están en uso. Aunque las dos plataformas difieren en cómo implementan estos métodos, ambos comparten una estrategia general que la aplicación especifica que los archivos de proceso y el sistema procesa cuando reinicia. Este artículo explica cómo las aplicaciones pueden utilizar el método proporcionado por cada plataforma de Windows.

Más información

Mover archivos en Windows NT

Aplicaciones basadas en Win32 que se ejecute en Windows NT deben utilice MoveFileEx() con el indicador MOVEFILE_DELAY_UNTIL_REBOOT para mover, reemplazar o eliminar archivos y directorios utilizados actualmente. La próxima vez que se reinicia el sistema, se moverá el programa de arranque de Windows NT, reemplazar o eliminar los archivos y directorios.

Para mover o reemplazar un archivo o directorio que está en uso, una aplicación debe especificar un origen y destino ruta de acceso en el mismo volumen (por ejemplo, la unidad C:). Si la ruta de acceso de destino es un archivo existente, se sobrescribirán. Si la ruta de acceso de destino es un directorio existente, no se sobrescribirá y rutas de acceso del origen y destino permanecerá sin cambios. Aquí es una llamada de ejemplo para mover o reemplazar un archivo o un directorio:
   // Move szSrcFile to szDstFile next time system is rebooted
   MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
				
para eliminar un archivo o directorio, la aplicación debe establecer la ruta de acceso de destino en NULL. Si la ruta de acceso de origen es un directorio, se quitarán sólo si está vacío. Tenga en cuenta que si debe usar MoveFileEx() para quitar los archivos de un directorio, debe reiniciar el equipo antes de que pueda llamar a MoveFileEx() para quitar el directorio. Aquí es un ejemplo de cómo eliminar un archivo o está vacío un directorio:
   // Delete szSrcFile next time system is rebooted
   MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
				

Mover archivos en Windows 95

Windows 95 no implementa MoveFileEx() pero proporciona una forma alternativa para basadas en Win32 todos los 16 bits en Windows y basada en MS-DOS aplicaciones mover, reemplazar o eliminar archivos (pero no los directorios) que están en uso actualmente. Esta capacidad se implementa mediante la sección [rename] de un archivo denominado Wininit.ini. Si está presente en el directorio de Windows Wininit.ini, Wininit.exe procesa cuando se inicia el sistema. Una vez que ha sido procesada Wininit.ini, Wininit.exe cambiará lo a Wininit.bak..

La sintaxis de la sección [rename] es:
   DestinationFileName=SourceFileName
				
DestinationFileName y SourceFileName deben residir en el mismo volumen y ser nombres cortos de archivo (8.3) porque se procese Wininit.ini antes de que se carga el sistema de disco de modo protegido y nombres de archivo largos sólo están disponibles cuando se ejecuta el sistema de disco de modo protegido. Se omiten los archivos de origen y de destino especificados en Wininit.ini con nombres largos de archivo.

La sección [rename] puede tener varias líneas con un archivo por línea. Para eliminar un archivo, especifique NULL como el DestinationFileName. Éstos son algunos ejemplos 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 eliminarse de hace que la primera línea. La segunda hace que Existing.txt se muevan a un nuevo directorio. La tercera causa oldname.txt se mueve y cambia el nombre. El cuarto hace que un archivo existente se sobrescriban por NewFile.txt.

Las aplicaciones no deben utilizar WritePrivateProfileString() para escribir entradas en la sección [rename] porque puede haber varias líneas con el mismo DestinationFileName, especialmente si DestinationFileName es "Null". En su lugar, debe agregar entradas al análisis Wininit.ini y anexar las entradas al final de la sección [rename].

Nota: Utilice siempre una búsqueda sin distinción entre mayúsculas y minúsculas para analizar Wininit.ini porque el título de la sección [rename] y los nombres de archivo dentro de él puede tener cualquier combinación de mayúsculas y minúsculas.

Las aplicaciones que utilizan Wininit.ini deben comprobar su existencia en el directorio de Windows. Si Wininit.ini está presente, otra aplicación se escribe en el desde que el sistema se reinició por última vez. Por lo tanto, la aplicación debe abrirlo y agregar entradas a la sección [rename]. Si Wininit.ini no está presente, la aplicación debe crearla y agregar a la sección [rename]. Este modo, asegura que las entradas de otras aplicaciones no eliminarse accidentalmente por la aplicación.

Para deshacer una operación de cambio de nombre de archivo antes de reiniciar el sistema, debe quitar la línea correspondiente de la sección [rename] del archivo Wininit.ini.

Propiedades

Id. de artículo: 140570 - Última revisión: martes, 21 de noviembre de 2006 - Versión: 4.3
La información de este artículo se refiere a:
  • Microsoft Win32 Application Programming Interface sobre las siguientes 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
Palabras clave: 
kbmt kbapi kbfileio kbhowto kbkernbase kbprogramming KB140570 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 140570

Enviar comentarios

 

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