应用程序被TaskManager或CMD杀死时执行代码

时间:2017-08-26 01:10:35

标签: c# mysql get httpwebrequest

我正在为我的笔记本电脑制作一个远程管理工具,所以每当我去某个地方,我都可以通过网络界面访问它。

我想知道每当应用程序被任务管理器或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());

(HOSTNAME,IP,USERNAME和HASH是变量)

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

P.S我知道它很容易受到SQL注入攻击,但我稍后会修复它。

1 个答案:

答案 0 :(得分:0)

取决于你的应用程序被杀的方式,但你可以涵盖很多这个。我确定它适用于taskmanager但是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;
        }