Была та же проблема, и это разрешило это для меня (Powershell as admin):
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ByPass
В диспетчере задач есть два способа убить приложение.
SIGTERM
. Приложение может перехватить его и сделать больше обработки, поскольку оно в основном отправляет сообщение «закрыть окно». Сообщение для catch - WM_CLOSE
. SIGKILL
. Нет ничего, что вы могли бы сделать, чтобы перехватить это, не контролируя действия пользователя в списке «Диспетчер задач» и кнопку «Завершить процесс», или имея сторожевой процесс, который будет видеть, когда первый будет убит. В качестве альтернативы, создайте приложение таким образом, чтобы он не требовал очистки, или таким образом, чтобы он выполнял очистку при запуске.
Это зависит от того, выбирает ли пользователь «Завершить задачу» ваше приложение, и вы сможете обработать его .
, но если пользователь решит закончить процесс, вы не можете обработать его в своем приложении. самый простой способ - это второй процесс, или вы можете добавить в диспетчер процессов и подключить API TerminateProcess.
Я думаю, вам понадобится другой PID, который контролирует PID вашего app.exe и выполняет необходимую работу в то время.