Конечно, вы должны предпринять все обычные шаги, чтобы заставить ваше приложение отказываться закрываться само по себе (возможно, если не указан пароль), поэтому мы говорим только о том, что «я не хочу позволять кому-либо принудительно закрывать»it "part.
Одним из решений было бы сделать ваше приложение оболочкой Windows.
Другим решением было бы настроить компьютер таким образом, чтобы вошедший в систему пользователь не имел разрешения на закрытие.Ваше приложение закрыто.
И последнее решение, которое представляет собой грязный, официально не поддерживаемый хак, о котором вы не слышали от меня, заключается в следующем:
public static class Utility
{
[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
public static void BsodIfProcessEnds()
{
Process.EnterDebugMode();
RtlSetProcessIsCritical(1, 0, 0);
}
public static void NoFireworksIfProcessEnds()
{
RtlSetProcessIsCritical(0, 0, 0);
}
}
Предупреждение: BsodIfProcessEnds
делает именно то, что говорит на банке.