我正在为我的笔记本电脑制作一个远程管理工具,所以每当我去某个地方,我都可以通过网络界面访问它。
我想知道每当应用程序被任务管理器或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注入攻击,但我稍后会修复它。
答案 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;
}