【发布时间】: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