C# 当应用程序被TaskManager或CMD终止时执行代码

C# 当应用程序被TaskManager或CMD终止时执行代码,c#,mysql,get,httpwebrequest,C#,Mysql,Get,Httpwebrequest,我正在为我的笔记本电脑制作一个远程管理工具,所以无论何时我去哪里,我都可以通过网络界面访问它 我想知道,每当应用程序被Task Manager或CMD/Powershell终止时,是否可以执行以下代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://10.0.0.1/?p=Logout&HOSTNAME={HOSTNAME}&IP={IP}&USERNAME={USE

我正在为我的笔记本电脑制作一个远程管理工具,所以无论何时我去哪里,我都可以通过网络界面访问它

我想知道,每当应用程序被Task Manager或CMD/Powershell终止时,是否可以执行以下代码:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://10.0.0.1/?p=Logout&HOSTNAME={HOSTNAME}&IP={IP}&USERNAME={USERNAME}&HASH={HASH}");
        request.AutomaticDecompression = DecompressionMethods.GZip;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse());
(主机名、IP、用户名和哈希是变量)

这将被执行,以便我的笔记本电脑从我的数据库中注销


另外,我知道它容易受到SQL注入的攻击,但我稍后会修复它。

取决于您的应用程序被终止的方式,但是您可以涵盖很多内容。我确信它适用于taskmanager,但是TerminateProcess和内核模式下的TerminateProcess可能会让人感到痛苦,我想不是这样的。下面是一个例子:

private delegate bool ConsoleEventDelegate(int eventType);

public static Main(string[] args)
{
            SetConsoleCtrlHandler(ConsoleEventCallback, true);
            AppDomain.CurrentDomain.UnhandledException += Reset;
            AppDomain.CurrentDomain.ProcessExit += Exit;
            AppDomain.CurrentDomain.DomainUnload += Exit;
}

        private static void Exit(object sender, EventArgs e)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://10.0.0.1/?p=Logout&HOSTNAME={HOSTNAME}&IP={IP}&USERNAME={USERNAME}&HASH={HASH}");
        request.AutomaticDecompression = DecompressionMethods.GZip;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse());
        }

        private static void Reset(object sender, UnhandledExceptionEventArgs e)
        {
            Exit(null, null);
        }

        private static bool ConsoleEventCallback(int eventType = 0)
        {
            Exit(null, null);
            return false;
        }