【问题标题】:Process,Kill() Not Working进程,Kill() 不工作
【发布时间】:2016-08-08 03:51:42
【问题描述】:

我正在尝试创建一个服务,每 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 正在运行,则不会终止该进程。我什至尝试过记事本,它也没有杀死它。我对此进行了研究,但没有找到答案。

感谢任何帮助!

- 赛博

【问题讨论】:

  • 您是否在提升模式下运行/具有管理员权限?
  • 我有一个批处理文件,用于卸载服务,然后安装并运行它。这都是在管理模式下完成的。这是你的意思吗?
  • p中有元素吗?如果是:执行是否超过 proc.WaitForExit()?
  • 最初我只用 getAllProcesses 进行了尝试。它返回了所有内容(我将其打印到事件记录器)。使用Skype,我很可能应该在其中包含元素。不,它没有通过 WaitForExit()。
  • 如果我有理由投反对票就好了?我是在做傻事还是?

标签: c# windows service process kill-process


【解决方案1】:

你可以使用taskkill:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多