Есть ли способ убить все экземпляры процесса, связанные с приложением, независимо от того, какой пользователь использует NSIS? - PullRequest
0 голосов
/ 26 марта 2019

При удалении приложения от пользователя-администратора в NSIS выполняется очистка только процесса, связанного с этим конкретным пользователем. Другой экземпляр процесса не убивает.

Последовательные шаги:

Установил приложение от пользователя admin и затем вошел в систему как обычный пользователь. Таким образом, для каждого пользователя я вижу один процесс (это ожидаемое поведение)

При переключении обратно на пользователя с правами администратора и удалении приложения, может убить только процесс для пользователя с правами администратора. И нормальный пользовательский процесс все еще показывает.

Есть ли способ убить все процессы, связанные с приложением, независимо от конкретного пользователя?

Я использую приведенный ниже фрагмент кода:

Section "Uninstall"

${nsProcess::FindProcess} "sysnotification.exe" $R0

MessageBox MB_OK "nsProcess::FindProcess$\n$\n\
            Errorlevel: [$R0]"
${if} $R0 == 0
BringToFront
${nsProcess::KillProcess} "sysnotification.exe" $R0
MessageBox MB_OK "KillProcDLL::KillProc$\n$\n\
                    Errorlevel: [$R0]"
${EndIf}

${nsProcess::Unload}

SectionEnd

1 Ответ

1 голос
/ 26 марта 2019

Администраторы могут находить и уничтожать процессы, запущенные от имени других пользователей.Это отмечено на вики-странице плагинов:

Находит процессы других пользователей при работе «от имени администратора» или при переключении на другого пользователя

Редактировать:

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

Вы можете попытаться связаться сАвтор и попросите их добавить эту функцию.А пока я бы порекомендовал вместо этого использовать плагин LockedList .

...