Какой самый чистый способ программно убить и перезапустить explorer.exe? - PullRequest
3 голосов
/ 14 мая 2010

Привет всем,

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

Спасибо!

Ответы [ 5 ]

2 голосов
/ 14 мая 2010

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

Рассматривали ли вы использование Менеджер перезапуска ?

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

1 голос
/ 07 июня 2011

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

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

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

pskill explorer.exe
psexec -d explorer.exe
exit

Вы также можете попробовать связаться с автором PSTools Марк Руссинович на сайте TechNet.

1 голос
/ 14 мая 2010

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

0 голосов
/ 22 января 2012

Я использую PowerShell в своих событиях пост-сборки следующим образом:

get-process explorer | kill

Обычно автоматически перезапускается нормально

0 голосов
/ 14 мая 2010

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

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

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

...