Los archivos que están abiertos actualmente o en uso en Windows no se pueden mover o eliminar hasta que se cierren. La mayoría de las veces cerrar el programa asociado haría el trabajo, pero a veces todavía no funcionará porque está asignado a la memoria o protegido por otro proceso. Para resolver este problema, la mayoría de nosotros simplemente confiaríamos en un software de terceros como FileASSASSIN, LockHunter, IObit Unlocker, BlitzBlank, etc., que es capaz de detectar archivos bloqueados e intentar desbloquearlos para realizar otras acciones. Desbloquear archivos bloqueados tiene su propio riesgo que posiblemente puede causar bloqueos en el sistema operativo.
La solución más segura es marcar el archivo para eliminarlo en el próximo reinicio y el sistema operativo Microsoft Windows ha facilitado a los desarrolladores porque viene con una API MoveFileEx para eliminar o renombrar / mover archivos la próxima vez que se inicie el sistema. Esta tarea se realiza leyendo una entrada de registro llamada PendingFileRenameOperations ubicada en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager. Tenga en cuenta que la clave de registro PendingFileRenameOperations no existirá a menos que haya una operación pendiente.
Si no le gusta jugar con el registro de Windows, aquí tenemos algunas herramientas gratuitas que pueden ayudarlo a leer las claves PendingFileRenameOperations y mostrar la lista de operaciones de archivos pendientes. Algunos de ellos tienen la capacidad de permitirle programar movimientos y eliminar comandos para el próximo reinicio. 1. PendMoves y MoveFile
PendMoves es una aplicación de línea de comandos simple de Windows Sysinternals donde puede leer las teclas PendingFileRenameOperations y mostrar la lista de archivos que se eliminarán o moverán a la nueva ubicación de destino. El objetivo vacío se mostrará como DELETE o de lo contrario será la nueva ubicación donde se moverá el archivo fuente.
Dado que PendMoves es una aplicación de línea de comandos, debe ejecutarse desde el símbolo del sistema para ver los resultados; de lo contrario, solo se abrirá y cerrará una ventana negra parpadeante. Presione WIN + R, escriba cmd en el cuadro Ejecutar y haga clic en Aceptar. Cambie al directorio donde se encuentra pendmoves.exe y escriba el nombre del archivo para ejecutar la aplicación.
Una aplicación separada llamada MoveFile que se incluye junto con PendMoves en el archivo es para agregar una entrada en PendingFileRenameOperations para programar un archivo que se eliminará o moverá en el próximo inicio de Windows. Simplemente especifique la fuente y el destino para mover el archivo o dejar el destino vacío con dos comillas dobles eliminará la fuente.
El siguiente comando de ejemplo moverá el archivo test.zip de C: \ al escritorio de la cuenta de usuario de Raymond.
C: \ movefile.exe c: \ test.zip c: \ raymond \ user \ desktop \ test.zip
El siguiente comando programará la eliminación del archivo test.zip en el próximo inicio de Windows.
C: \ movefile.exe c: \ test.zip ""
Descargar PendMoves y MoveFile
2. Por qué reiniciar
Si prefiere una herramienta más fácil de usar que tenga una interfaz gráfica de usuario, WhyReboot sería su elección. WhyReboot es una herramienta pequeña y portátil que muestra una lista de operaciones de archivos pendientes y, además, la clave de registro RunOnce. La clave de registro RunOnce es una instrucción para que Windows ejecute automáticamente un programa específico solo una vez durante el inicio y la clave se eliminará cuando haya procesado la solicitud.
Aunque WhyReboot se creó para determinar si debe reiniciar su computadora cuando se le solicite después de instalar un programa o actualización, todavía está muy lejos de poder hacerlo. WhyReboot no es capaz de decirle si un controlador principal importante o un archivo DLL ha sido reemplazado y requiere un reinicio para cargar, lo que se ve con bastante frecuencia en software basado en seguridad, como un programa antivirus.
Descargar WhyReboot
3. WMI VBScript
Para los administradores o programadores que prefieren las secuencias de comandos para la flexibilidad en la implementación de la automatización, encontramos un útil WMI VBScript escrito por Tom Mills, un Arquitecto de Soluciones con Servicios de Microsoft. Básicamente, lo que hace el archivo VBS es leer y analizar las operaciones PendingFileRenameOperations que muestran el resultado en una ventana emergente.
El código VBS puede obtenerse del sitio oficial del blog Tom Mills MSDN o puede descargar el script a continuación.
Descargar CheckPendingFileRenameOperations.vbs
4. MoveEx
Hay dos versiones de MoveEx, una creada por Alexander Frink que se puede encontrar en Softpedia, la otra por Frank Westlake de ss64.net y presentamos la última. La razón por la que preferimos MoveEx de Frank sobre Alexander es la capacidad de eliminar una entrada individual en PendingFileRenameOperations además de analizar y mostrar la operación.
Para ver las entradas PendingFileRenameOperations, simplemente ejecute la aplicación en la línea de comando. Para eliminar una entrada individual PendingFileRenameOperations, deberá agregar / d junto con el número de entrada que se muestra al ejecutar MoveEx sin un argumento de línea de comandos. Como puede ver en la captura de pantalla anterior, el primer comando enumera todas las entradas en PendingFileRenameOperations y el segundo comando que tiene un "/ d 003" elimina la tercera entrada.
Agregar una entrada PendingFileRenameOperations usando MoveEx es lo mismo que MoveFile de Sysinternals que especifica el origen seguido del destino. Dejar el objetivo vacío programará que Windows elimine el archivo fuente.
Descargar MoveEx
5. Agregar o eliminar manualmente la entrada PendingFileRenameOperations
No hay ningún problema en eliminar manualmente la clave PendingFileRenameOperations del registro del sistema, pero agregar una entrada es complicado porque es un valor REG_MULTI_SZ, no la cadena normal o DWORD. Para eliminar, simplemente navegue a HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager en el registro y elimine la clave PendingFileRenameOperations.
Para agregar una entrada de eliminación, vaya a HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ haga clic con el botón derecho en el panel derecho, vaya a Nuevo, seleccione Valor de cadenas múltiples y nómbrelo como PendingFileRenameOperations . Haga doble clic en el valor de registro recién creado e ingrese la ubicación completa del archivo que comienza con \ ?? \ (por ejemplo, \ ?? \ C: \ raymondcc.exe ) que desea programar para su eliminación. Haga clic en Aceptar cuando haya terminado. Ahora haga clic derecho en PendingFileRenameOperations y seleccione Modificar datos binarios . Debería ver un montón de números en los datos del valor. Ingrese cuatro ceros "00 00" sin las comillas al final de la cadena hexadecimal y haga clic en Aceptar. Reinicie su computadora y el archivo se eliminará.
Extrañamente, programar una operación de movimiento en un archivo durante el arranque de Windows usando PendingFileRenameOperations es mucho más fácil si se compara con la eliminación, ya que no implica modificar los datos binarios en el registro. Siga los pasos anteriores hasta que haya alcanzado la parte para agregar datos de valor en el cuadro Editar cadena múltiple. Debe especificar dos rutas, que es el origen y el destino. Un ejemplo a continuación moverá el archivo raymondcc.exe de C: \ source a c: \ target.
\ ?? \ C: \ source \ raymondcc.exe
\ ?? \ C: \ target \ raymondcc.exe