处理,杀死()不工作

时间:2016-04-16 02:46:19

标签: c# windows service process kill-process

我试图提供服务,每1000毫秒(1秒)杀死任何名为Skype的进程。我100%确定我已正确编码,一切正常,记录等。但是杀死过程不是。

    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正在运行,则该过程不会被终止。我甚至尝试过记事本,它也没有杀死它。我已对此进行了研究,但未找到答案。

感谢任何帮助!

- Seb

1 个答案:

答案 0 :(得分:0)

你可以使用taskkill:

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