2010-05-14 2 views
3

Приветствия все,Какой самый чистый способ программно убить и перезапустить explorer.exe?

Я работаю над программой Windows, установка которой требует перезапуска explorer.exe. Я знаю, что «перезагрузить компьютер для завершения установки» является стандартным методом здесь, но я хочу, чтобы мой установщик предоставил пользователям возможность просто перезапустить проводник, чтобы они могли сразу начать использовать мою программу. Каков наилучший способ сделать это? Конечно, я мог просто найти и убить процесс, но это кажется довольно неприятным. Есть ли какая-то трюк, чтобы, скажем, заставить Explorer думать, что пользователь выходит из системы и закрывается чисто?

Спасибо!

+0

Это точно, как Live Mesh сделал обновлений –

ответ

2

Это MSI-установка?

Считаете ли вы использование Restart Manager?

Менеджер перезапуска будет определять, какие процессы хранят файлы/дескрипторы, открывать и перезапускать, а также автоматически останавливать/запускать эти процессы без перезагрузки.

+0

Это, однако, может привести к отсутствию explorer.exe перезапускается после обновления ... См. https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/Windows-7-Explorer-fails-to-restart-after-uninstalling-an-Autodesk -product.html и https://gitlab.com/tortoisegit/tortoisegit/issues/2557#note_13925520 – MrTux

1

Я могу попытаться вызвать ExitProcess или TerminateProcess, чтобы остановить explorer.exe.

0

Вы можете отправить сообщение WM_ENDSESSION.

Это могло бы обмануть его, думая, что компьютер выключается. Затем мы надеемся освободить все ресурсы, закрыть все открытые окна проводника и т. Д.

Затем, когда он закрыт, вы можете перезапустить процесс.

1

Я не знаю, если вы можете осуществить это, но я скачал PsTools из:

http://technet.microsoft.com/en-us/sysinternals/bb896649

Тогда я написал следующий пакетный файл, который убивает, а затем выполняет процесс explorer.exe:

pskill explorer.exe 
psexec -d explorer.exe 
exit 

Вы также можете попробовать связаться с автором PSTools Mark Russinovich на сайте TechNet.

0

Я использую PowerShell в моем посте сборки событий, как это:

get-process explorer | kill 

Как правило, автоматически перезапускает штраф

Смежные вопросы