Le redémarrage de explorer.exe ne s'ouvre une fenêtre de l'explorateur
Le Problème
Dans une partie d'un fichier de commandes (genre, voir Informations Supplémentaires) j'ai besoin de redémarrer
Explorer, j'utilise donc le, essayé et testé la méthode de
taskkill /f /im explorer.exe >nul
explorer.exe
Alors ce qui se passe
explorer.exe
est terminée avec succèsexplorer.exe
est démarré (voir l'Image 2), mais seulement un
La fenêtre de l'explorateur s'ouvre, je suis parti avec indéfiniment (voir Image 1)
Je peux seulement redémarrer correctement Explorer par le démarrage d'une nouvelle tâche de Tâche
Gestionnaire, comme, je suppose, Win + R
fait partie de l'Explorateur.
Informations Supplémentaires
Maintenant, je dis "genre" que je suis l'exécution du fichier de commandes à partir d'un auto-exécution de SFX
archive, créé avec WinRAR. Ainsi, lorsqu'il est exécuté, le contenu de l'archive sont
extrait de %temp%
et d'un fichier défini par l'utilisateur (généralement un boot-strapper et, dans
ce cas, mon fichier de commandes) est exécuté lors de l'extraction réussie.
Jusqu'à présent, j'ai déduit
explorer.exe
est certainement pleinement tué.- Le fichier de commandes est certainement appelé et exécuté correctement, comme il fonctionne, et
tout le reste dans le script fonctionne comme prévu, sauf pour la ligne
commenceexplorer.exe
- La commande pour redémarrer l'Explorateur n'est pas "mal placé", ou quoi que ce soit, comme je l'ai
essayé de le retarder. - Le fichier batch fonctionne parfaitement lorsque extraites manuellement à partir de l'archive,
ce n'est pas un problème avec la compression ou des procédés d'extraction. - Même avec des commandes comme
start explorer.exe | cmd.exe
Explorer n'est pas
redémarrer correctement, il est donc certainement pas un problème avec le.bat
fichier.
Je peux confirmer qu'il fonctionne sur Windows XP et Windows 7 x86, mais pas Windows 7
x64 (ce qui est mon système).
Statut
Pour le moment, je me méfie de WinRAR, comme je l'ai prouvé que le code lui-même
des œuvres. Donc, je suis de la création de l'auto-exécution SFX avec différentes versions de
WinRAR. Jusqu'à présent, j'ai essayé les versions:
- 4.11 x86
- 4.11 x64
- 4.20b3 x86
- 4.20b3 x64
et avaient les mêmes résultats à chaque fois.
J'ai envoyé un rapport de bug [email protected] hier et eu une réponse de
Eugene Roshal lui-même ce matin
Bonjour,
SFX module utilise ShellExecuteEx pour lancer l'installation de l'application.
Normalement, ça marche bien. Je ne sais pas pourquoi Explorateur décide de commutateur
en mode fenêtré.
Maintenant, j'ai construit un petit programme autonome
#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);
}
qui test s'exécute.chauve-souris avec le contenu comme dans votre exemple. Ce programme
montre exactement le même comportement que WinRAR SFX, donc Explorer est lancé
dans la fenêtre.
et un second e-mail de ce matin
Désolé, aucun avis n'maintenant. J'ai remplacé ShellExecuteEx avec 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);
}
mais le résultat est le même. J'ai essayé d'utiliser d'autres SW_ des drapeaux comme
SW_SHOWDEFAULT ou SW_RESTORE avec ShellExecuteEx aussi "ouvert"
et à "explorer" lpVerb, mais ça n'aide pas. Pour l'instant je n'ai pas
comprendre la logique derrière cette fenêtre contre le mode de bureau.
Je me rends compte à l'avenir est sombre, mais, j'espère que c'est de l'aide à quelqu'un..
Preuve
Lien vers une archive SFX de le démontrer, si quelqu'un le veut:
https://dl.dropbox.com/u/27573003/Social%20Distribution/restart-explorer.exe
Vous remarquerez peut-être ici que je l'exécute les commandes à l'intérieur d'une VM (comme indiqué par les
VMwareTray.exe
), mais ce n'est pas une VM-à l'origine de conflits. J'ai testé exactement la même
les fichiers sur mon propre système hôte (qui est le même OS), et ont eu le même
résultats.
Mise à jour
Je suis en train de vivre similaire "travaille à l'extérieur d'une archive SFX, mais pas d'un"
problèmes lors de l'utilisation de REG ADD
dans un tout autre projet.
Je ne pense pas que SFX archives de jouer gentil avec les fichiers par lots.
- Fonctionne sur XP 32. Peut-être que votre exe n'a pas le permis de tuer? L'UAC et de l'Internet sécurité de la Zone paramètres peuvent être les coupables.
- Mais il n'tuer le processus. Il n'a tout simplement pas redémarrer correctement. Et il n'y a pas toute l'UAC popups et en cours d'exécution en tant qu'administrateur n'est pas de faire une différence.
- Attendez, si c'est réellement tuer le processus, et c'est l'ouverture d'une fenêtre de l'explorateur par la suite, alors comment est-il pas le redémarrage de l'explorateur? Dernière, j'ai vérifié, vous ne pouvez pas avoir une fenêtre de l'explorateur s'ouvrir sans explorer en cours d'exécution.
- Exactement. D'où ma confusion.
- Je me demande si une partie de Win-RAR est en cours d'exécution en mode 32 bits? Pourriez-vous même de commencer à explorer64 cours d'exécution à partir d'un processus 32 bits? Je suis assez certain que Windows ne le ferai pas.
Vous devez vous connecter pour publier un commentaire.
Je pense que user1631170 est à quelque chose, "je me demande si une partie de Win-RAR est en cours d'exécution en mode 32 bits? Pourriez-vous même de commencer à explorer64 cours d'exécution à partir d'un processus 32 bits? Je suis assez certain que Windows ne le ferai pas."
Quand je commence explorer.exe de ProcessHacker (32 bits gestionnaire de processus), j'obtiens une fenêtre de l'explorateur.
Mais je peux le forcer à démarrer le 64 bits explorer avec ceci:
sysnative est un mot-clé que Windows reconnaît à contourner le système de fichiers de redirection pour 32-bit/64-bit (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs. 85).aspx
Profitez-en!
J'ai eu ce même problème et a trouvé que toutes les solutions ici n'a toujours pas de travail à partir d'un script de commandes.
Aucun de ces travaillé complètement:
parce qu'ils ont tous ouvert une fenêtre (et à ne pas montrer la barre des tâches de nouveau), ou le script de commandes suspendues par la suite, et je ne pouvais pas exécuter plus de commandes
J'ai trouvé que cette ligne dans le fichier de commandes n'travail (après avoir tué explorer.exe):
et a également permis à d'autres commandes qui doivent être exécutées après avoir dans le script
Cela fonctionne dans Windows 7:
Pour le redémarrage explorer.exe, cela a fonctionné pour moi.
Essayer
Lorsque vous exécutez explorer.exe à partir d'une application 32 bits et 64 bits de windows, le chemin d'accès sera redirigé vers la SysWOW64 répertoire qui contient les 32 bits explorer.exe.
Dans XP64 il n'était pas pas une grosse affaire. Dans le gestionnaire des tâches, vous pouvez voir les 32 bits explorer.exe cours d'exécution, mais il n'début de la coquille. Dans Windows 10 (comme je suis venu à ce problème, on dirait qu'il est introduit dans Windows 7), le 32 bits explorer.exe est un stub qui crée une nouvelle instance de la 64-bit explorer.exe. Probablement qu'elle passe un chemin sur la ligne de commande, voici donc le 64 bits explorer.exe ouvre une fenêtre au lieu de départ de la coque.
Donc, il est toujours comme avant, que vous pouvez contrôler si une fenêtre ou une coquille devrait être lancé en démarrant explorer.exe avec ou sans chemin d'accès en tant que paramètre de ligne de commande.
Au lieu de cela, vous devriez vigueur à compter de la 64-bit explorer.exe à partir de l'application 32 bits et tout est ok. Pour ce faire, la méthode consiste à l'aide de la sysnative répertoire comme mentionné ci-dessus. Mais une autre méthode consiste à utiliser Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection.
J'ai fait la dernière et peut confirmer qu'il fonctionne très bien. Pour les deux CreateProcess et ShellExecuteEx API.
J'ai vu des problèmes similaires avant de le faire en C#. Le processus doit être invoquée par l'appelant shell de l'explorateur plutôt que la fenêtre de l'explorateur, mais je n'ai pas eu de problèmes dans le lot.
Essayez d'utiliser ceci:
La différence entre les autres réponses
explorer
plutôt queexplorer.exe
qui a causé des problèmes avant pour moi.Cela fonctionne sur mon Win7 x64 PC.
Espérons que cette aide!
L'autre jour, j'ai eu un coup d'oeil par le biais de certains de WinRAR options plus avancées et suis tombé sur cet onglet:
Dès que j'ai vu que je soupçonne d'être une partie du problème et de la solution, tant que cette question ne se produit jamais sur Windows 7 x64.
Comme suspect, à l'aide de la
Default64.SFX
module au lieu de la valeur par défautDefault.SFX
module entièrement résolu le problème. Enfin.Ont le même problème avec Visual Studio.
Ce qui fonctionne pour moi (Win 7 Pro 64 bits):
PPM sur le nom du Projet, sélectionnez "Propriétés"
Propriétés de Configuration > Construire des Événements > Pré-Événement de construction
taskkill /im explorer.exe /f
Propriétés de Configuration > Construire des Événements > Post-Événement de construction
start "" "C:\Windows\explorer.exe"
Mais cette faire autre problème (l'IDE est gelé après l'explorer s'exécute) et maintenant je suis seulement capable de relancer l'IDE pour exécuter commande de construction de nouveau...
Utiliser cette (.chauve-souris avec des privilèges administratifs) en x64 ou x86
Ce qui a fonctionné pour moi sous Windows 7 64 bits a été
"C:\Windows\expstart.exe"
ou tout simplement
expstart.exe
Essayez d'ajouter un explorer.exe la clé pour les Chemins de App dans le registre.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\explorer.exe
(Par Défaut) C:\Windows\explorer.exe
Chemin C:\Windows
ou copiez le texte suivant dans le bloc-notes et enregistrer en tant que .fichier reg, puis de l'exécuter:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\explorer.exe]
@="C:\Windows\explorer.exe"
"Path"="C:\Windows"
Facile Menu Contextuel
Il suffit de cliquer droit sur le bureau et choisissez Redémarrer l'Explorateur Windows. Profitez-en!