reparar reiniciar reinicia iniciar explorador desde descargar abrir windows batch-file explorer taskkill

windows - reiniciar - El reinicio de explorer.exe solo abre una ventana del explorador



reiniciar explorer.exe windows 10 (13)

El problema

En una parte de un archivo por lotes (tipo de, consulte Información adicional) necesito reiniciar Explorer, así que uso el método probado y comprobado de

taskkill /f /im explorer.exe >nul explorer.exe

Entonces esto sucede

  1. explorer.exe ha finalizado correctamente
  2. Se inicia explorer.exe (vea la Imagen 2), pero solo se abre una ventana del Explorador, que me queda por tiempo indefinido (vea la Imagen 1)

Entonces, solo puedo reiniciar correctamente el Explorador iniciando una nueva tarea desde el Administrador de tareas, ya que, supongo, Win + R es parte del Explorador.

Información extra

Ahora, digo "tipo de" ya que estoy ejecutando el archivo por lotes desde un archivo SFX de ejecución automática, creado con WinRAR. Por lo tanto, cuando se ejecuta, el contenido del archivo comprimido se extrae a %temp% y se ejecuta un archivo definido por el usuario (generalmente un boot-strapper y, en este caso, mi archivo por lotes) luego de una extracción exitosa.

Hasta ahora, he deducido

  1. explorer.exe definitivamente está siendo completamente eliminado.
  2. El archivo por lotes definitivamente se llama y ejecuta correctamente, ya que se ejecuta y todo lo demás en el script funciona según lo diseñado, excepto por la línea que inicia explorer.exe
  3. El comando para reiniciar Explorer no está "mal programado", o algo así, ya que he intentado retrasarlo.
  4. El archivo por lotes funciona perfectamente cuando se extrae manualmente del archivo, por lo que no es un problema con los procesos de compresión o extracción.
  5. Incluso con comandos como start explorer.exe | cmd.exe start explorer.exe | cmd.exe Explorer no se reinicia correctamente, por lo que definitivamente no es un problema con el archivo .bat .

Puedo confirmar que funciona en Windows XP y Windows 7 x86 pero no en Windows 7 x64 (que es mi sistema).

Estado

En este momento, desconfío de WinRAR, ya que he probado que el código en sí funciona. Entonces, estoy creando el SFX autoejecutable con diferentes versiones de WinRAR. Hasta ahora, he probado versiones:

  • 4.11 x86
  • 4.11 x64
  • 4.20b3 x86
  • 4.20b3 x64

Y tenía los mismos resultados cada vez.

Ayer presenté un informe de error a [email protected] y recibí una respuesta del propio Eugene Roshal esta mañana.

Hola, el módulo SFX usa ShellExecuteEx para iniciar una aplicación de configuración. Normalmente funciona bien. No sé por qué Explorer decide cambiar al modo de ventana. Ahora construí un pequeño programa independiente

#include <windows.h> void main() { SHELLEXECUTEINFO si; memset(&si,0,sizeof(si)); si.cbSize=sizeof(si); si.lpFile="test.bat"; si.nShow=SW_SHOWNORMAL; ShellExecuteEx(&si); }

que ejecuta test.bat con contenidos como en su muestra. Este programa muestra exactamente el mismo comportamiento que WinRAR SFX, por lo que Explorer se inicia en la ventana.

y un segundo correo esta mañana

Lo siento, no hay consejos ahora. Reemplacé ShellExecuteEx con CreateProcess

#include <windows.h> void main() { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si,0,sizeof(si)); si.cb=sizeof(si); CreateProcess(NULL,"test.bat",NULL,NULL,TRUE,0,NULL,NULL,&si,&pi); }

pero el resultado es el mismo. Intenté usar otros indicadores SW_ como SW_SHOWDEFAULT o SW_RESTORE con ShellExecuteEx también como "abrir" y "explorar" lpVerb, pero no ayuda. Por ahora no entiendo la lógica detrás de este modo de ventana frente a escritorio.

Me doy cuenta de que la perspectiva es sombría, pero espero que sea de ayuda para alguien ...

Prueba / Evidencia

Enlace a un archivo SFX demostrando esto, si alguien lo quiere: https://dl.dropbox.com/u/27573003/Social%20Distribution/restart-explorer.exe

Puede notar aquí que estoy ejecutando los comandos dentro de una VM (como se indica por VMwareTray.exe ) pero no es un conflicto causado por la VM. He probado exactamente los mismos archivos en mi propio sistema host (que es el mismo sistema operativo) y he tenido los mismos resultados.

Actualizar

Estoy experimentando problemas similares "al margen de un archivo SFX pero no de uno" al usar REG ADD en un proyecto completamente diferente. Simplemente no creo que los archivos SFX jueguen bien con los archivos por lotes.


Creo que el usuario 1631170 está en algo, "me pregunto si alguna parte de Win-RAR se ejecuta en modo de 32 bits. ¿Podría siquiera iniciar el explorer64 ejecutando desde un proceso de 32 bits? Estoy bastante seguro de que Windows no hará eso . "

Cuando inicio explorer.exe desde ProcessHacker (administrador de procesos de 32 bits), aparece una ventana del explorador.

Pero puedo forzarlo para iniciar el explorador de 64 bits con esto:

%systemroot%/sysnative/cmd.exe /c start /B explorer.exe

sysnative es una palabra clave que Windows reconoce para omitir la redirección del sistema de archivos para 32 bits / 64 bits ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx Disfruta!


Cuando ejecuta explorer.exe desde una aplicación de 32 bits en ventanas de 64 bits, la ruta se redireccionará al directorio SysWOW64 que contiene el explorer.exe de 32 bits.

En XP64 no fue tan importante. En el administrador de tareas puede ver el explorer.exe de 32 bits en ejecución, pero comenzó como el shell. En Windows 10 (como llegué a este problema, parece que se introdujo en Windows 7), el explorer.exe de 32 bits es un código auxiliar que crea una nueva instancia del explorer.exe de 64 bits. Probablemente pasa una ruta en la línea de comandos aquí, por lo que el explorer.exe de 64 bits abre una ventana en lugar de iniciar el shell.

Así que todavía es como antes, puede controlar si una ventana o un shell deben iniciarse iniciando explorer.exe con o sin una ruta como parámetro de línea de comandos.

En su lugar, debe forzar el inicio del explorer.exe de 64 bits desde la aplicación de 32 bits y todo está bien. Para hacer esto, un método es usar el directorio sysnative como se mencionó anteriormente. Pero otro método es usar Wow64DisableWow64FsRedirection / Wow64RevertWow64FsRedirection.

Hice lo último y puedo confirmar que funciona muy bien. Tanto para CreateProcess como para ShellExecuteEx API.


El otro día, estaba revisando algunas de las opciones más avanzadas de WinRAR y encontré esta pestaña:

Tan pronto como vi, sospeché que era parte del problema y la solución, ya que este problema solo ocurre en Windows 7 x64.

Como se sospechaba, el uso del módulo Default64.SFX lugar del módulo predeterminado Default.SFX solucionó el problema por completo. Finalmente.


Esto funciona en Windows 7:

taskkill /f /IM explorer.exe start explorer.exe exit


He visto problemas similares antes de hacer esto en C #. El proceso tuvo que ser invocado llamando al shell del explorador en lugar de a la ventana del explorador, pero no he tenido ningún problema en el lote.

Intenta usar esto:

taskkill /im explorer.exe /f explorer

La diferencia entre las otras respuestas es que son explorer lugar de explorer.exe que me ha causado problemas antes.

Esto funciona en mi PC Win7 x64.

¡Espero que esto ayude!


Intente agregar una clave explorer.exe a las rutas de la aplicación en el registro.

HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / App Paths / explorer.exe

(Predeterminado) C: / Windows / explorer.exe

Ruta C: / Windows

o copie lo siguiente en el bloc de notas y guárdelo como un archivo .reg luego ejecútelo:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / App Paths / explorer.exe] @ = "C: / Windows / explorer.exe" "Ruta" = "C: / Windows"


Lo que funcionó para mí en Windows 7 de 64 bits fue "C: / Windows / expstart.exe" o simplemente expstart.exe


Para reiniciar explorer.exe, esto funcionó para mí.

powershell.exe Stop-Process -processname explorer


Tiene el mismo problema con Visual Studio.

Lo que me funciona (Win 7 Pro 64bit):

PPM en el nombre del proyecto seleccione "Propiedades"

Propiedades de configuración> Eventos de compilación> Evento de precompilación

taskkill /im explorer.exe /f

Propiedades de configuración> Eventos de compilación> Evento posterior a la compilación

start "" "C:/Windows/explorer.exe"

Pero esto crea otro problema (el IDE se congela después de que se ejecuta el explorador) y ahora solo puedo reiniciar el IDE para ejecutar el comando de compilación nuevamente ...


Tratar

%windir%/explorer.exe start %windir%/explorer.exe start /d%windir% explorer.exe


Tuve este mismo problema y encontré que todas las soluciones aquí todavía no funcionaban desde un script por lotes.

Ninguno de estos funcionó completamente:

start explorer.exe start explorer explorer.exe explorer

porque todos abrieron una ventana (y no volvieron a mostrar la barra de tareas), o la secuencia de comandos del lote se colgó posteriormente y no pudo ejecutar más comandos

Encontré que esta línea en el archivo por lotes funcionó (después de matar explorer.exe):

start "" "%windir%/explorer.exe"

y también permitió que se ejecuten otros comandos después de que en el script


Utilice este (.bat con privilegios administrativos) en x64 o x86

tasklist /fi "imagename eq explorer*" | find /i "explorer*" if not errorlevel 1 (taskkill /f /im "explorer*") else ( start %windir%/explorer.exe


Menú contextual fácil

Simplemente haga clic derecho en el escritorio y elija Reiniciar el Explorador de Windows . ¡Disfrutar!