2016-04-16 20 views
2

私は1000milliseconds(1秒)ごとにSkypeという名前のプロセスを終了させるサービスを作ろうとしています。私はそれがすべて正しく、すべてが動作している、などを記録していることを100%確信していますが、プロセスを殺すことはありません。Process、Kill()Not Working

private System.Timers.Timer _timer; 
    protected override void OnStart(string[] args) 
    { 
     try 
     { 
      _timer = new System.Timers.Timer(100); 
      _timer.Elapsed += _timer_Elapsed; 
      _timer.Enabled = true; 
      if (!EventLog.SourceExists("MYTESTSERVICE")) 
       EventLog.CreateEventSource("MYTESTSERVICE", "MYTESTSERVICE LOG"); 
      //_timer.Start(); 
      Process[] p = Process.GetProcessesByName("Skype"); 
      foreach (Process proc in p) 
      { 

       proc.Kill(); 
       proc.WaitForExit(); 
       EventLog.WriteEntry("User Tried To Start Skype! Closed.", EventLogEntryType.Warning); 

      } 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry(String.Format("WcfServiceHostTest \n Exception Message: {0}\nTrace: {1}", ex.Message, ex.StackTrace), EventLogEntryType.Error); 
     } 
    } 

私は現在、タイマーを使用していませんが、サービスの起動時にテストします。 Skypeが実行中の場合、プロセスは強制終了されません。私はメモ帳にもしようとしました。私はこれに関する研究をしましたが、答えは見つかりませんでした。

ご協力いただきましてありがとうございます。

- セブ

+0

を? – Alfie

+0

サービスをアンインストールし、インストールして実行するバッチファイルがあります。これはすべて管理モードで行われます。これはあなたが意味することですか? – AGuyNamedPotato

+0

pに要素がありますか?はいの場合:実行がproc.WaitForExit()を過ぎていますか? – FunkyPeanut

答えて

0

あなたがtaskkill使用することができます:あなたが管理者権限で/昇格モードで実行されている

Process.Start(new ProcessStartInfo 
    { 
     FileName = "taskkill", 
     Arguments = $"/im skype.exe /f /t", 
     CreateNoWindow = true, 
     UseShellExecute = false 
    }).WaitForExit();