Есть несколько сценариев здесь:
Вы убиваете приложение, выполнив «Завершить процесс» на вкладке Processes. В этом случае вы ничего не можете сделать.
Вы выполняете «Завершить задачу» на вкладке «Приложения». Вы можете перехватить это, обработав событие закрытия вашей основной формы и написание этого кода. Вы можете узнать больше о закрытой причине here.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.TaskManagerClosing)
{
}
}
Хотя, если вы абсолютно хотите, чтобы убедиться, что пользователь не может остановить запуск приложения, необходимо создать отдельное приложение, которое держит часы на вашем приложении. И всякий раз, когда он убивается, ваше приложение запускает его снова. Вы можете проверить, работает ли приложение или нет через следующий код и вызывать этот код через таймер после каждого 10s
или любого желаемого интервала.
private bool IsProcessRunning(string name)
{
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
Зачем вам это нужно? Это важная функция диспетчера задач. Если бы вы могли описать, что вы пытаетесь выполнить, может быть предложена альтернатива. Я думаю, вы пишете утилиту для киоска или что-то в этом роде, где вы не хотите, чтобы обычные пользователи возились с системой? Для чего-то вроде, просто зарегистрируйте пользователя в качестве гостя. –
Диспетчер задач спрашивает сначала. Вы блокируете это. Затем он переключается на режим убийства и смерти. И завершает ваш процесс с помощью TerminateProcess(). Вы не можете это прекратить. Пользователь * всегда * выигрывает. –
«Я уверен, что есть способ сделать это». И я уверен, что вы ошибаетесь. Невозможно предотвратить закрытие приложения пользователем. Вы можете сделать это сложнее, но в конечном итоге пользователь может убить ваше приложение. –