Я недавно наткнулся на какой-то код C #, который утверждал, что делает процесс "незакрытым". Моей первой мыслью было, невозможно, просто запустить taskmgr от имени администратора и завершить его. Однако при дальнейшей проверке я заметил, что при попытке закрыть его отображается следующее сообщение:
Так что же на самом деле делает его неубиваемым? Что если вам нужно закрыть этот процесс, но не выключить компьютер? Как бы вы победили это? Действительно ли это сделает процесс неубиваемым?
Актуальный вопрос, чтобы разрешить любую путаницу: как закрыть этот тип процесса, который реализует похожий код и ведет себя одинаково?
Код C #:
using System.Runtime.InteropServices;
using System.Diagnostics;
[DllImport("ntdll.dll", SetLastError = true)]
private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass
, ref int processInformation, int processInformationLength);
//https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FProcess%2FPROCESS_INFORMATION_CLASS.html
public void critical(int status)
{
int BreakOnTermi =0x1D; //breakoftermination value
//https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FProcess%2FPROCESS_INFORMATION_CLASS.html
Process.EnterDebugMode();
NtSetInformationProcess(Process.GetCurrentProcess().Handle, BreakOnTermi,
ref status, sizeof(int));
}
// critical(1); enable anti termanite,critical(0) disable anti terminate.
//https://www.youtube.com/watch?v=XiTzsh1hErI&feature=youtu.be