2017-08-26 18 views
-2

私は自分のラップトップ用のリモート管理ツールを作っているので、どこか行くたびにWebインターフェイス経由でアクセスできます。TaskManagerまたはCMDでアプリケーションを終了したときにコードを実行

私は、次のコードを実行する可能性があれば、アプリケーションがタスクマネージャまたは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

あなたのアプリケーションが殺される方法によって異なりますが、多くのことをカバーすることができます。私はそれが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; 
     } 
関連する問題