Просмотрев на офф. сайте плагины которые работают с процессами, для себя посчитал наиболее удачный и даже лучший
nsProcess.
Но ни один из них не умеет завершать оболочку системы, с ошибками работают в WIN7 и т.д
Решил написать свой плагин, за основу взял вышеупомянутый плагин...
В общем долго "мучил" свой проект. И вот что получилось:
---
Плагин предназначен для ANSI версии NSIS, кроссплатформенный (х86/x64), только для систем Windows NT начиная от Win2000 и выше.
Никаких дополнительных приложений, библиотек не требуется. Плагин полностью идентичен по функционалу стандартного диспетчера задач. (использованы не документированные функции Win API)
1.
Поиск запущенного процесса
читать дальше »
Код:

nsRestart::FindProcess "процесс.exe"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = 1 -> процесс не найден, не запущен
$var = 0 -> процесс запущен
2.
Запись в файл *.ini список процессов с идентификаторами
читать дальше »
Код:

nsRestart::ListProcess "Путь\файл.ini"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = error -> ошибка
$var =0 -> список успешно создан
3.
Получение полного пути запущенного процесса
читать дальше »
Код:

nsRestart::PathProcess "процесс.exe"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = 1 -> процесс не найден, не запущен
$var -> путь к запущенному процессу
4.
Получение полного пути и командной строки запущенного процесса
Если запущеный процесс не имеет аргументов командной строки, то получаем путь к процессу.
Работает эта функция только с 32-битными процессами.
Достойного рещения для 64-битных процессов пока не нашел.
читать дальше »
Код:

nsRestart::CmdPathProcess "процесс.exe"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = 1 -> процесс не найден, не запущен
$var -> путь к запущенному процессу + аргументы процесса
5.
Перезапуск с аргументами командной строки запущенного процесса.
Перезапуск делается с задержкой в одну секунду.
Естественно кроме,
специфических процессов (служб и т.д).
64-битные процессы будут перезапущены без аргументов командной строки.
Я категорически не рекомендую делать перезапуск системных процессов !!!
Во избежания потерь данных и получения "синих" экранов смерти !!!!
читать дальше »
Код:

nsRestart::RestartProcess "процесс.exe"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = 0 -> процесс успешно перезапущен
$var = 1 -> процесс не запущен, не найден
$var = 2 -> процесс невозможно завершить
$var = 3 -> процесс завершен, но невозможно запустить
6.
Завершение процесса
Я категорически не рекомендую "прибивать" системные процессы !!!
Во избежания потерь данных и получения "синих" экранов смерти !!!!
читать дальше »
Код:

nsRestart::KillProcess "процесс.exe"
Pop $var
Где
$var принимает следующие значения:
Код:

$var = 0 -> процесс успешно завершен
$var = 1 -> процесс не запущен, не найден