清除Rogue Excel应用程序

时间:2016-01-12 18:39:05

标签: c# excel interop taskmanager

我有一个作业服务器,可以在Excel中自动执行各种报告(使用MS Query)。总是会有一个或多个报告异常结束,只打开一个必须清除的Excel实例。

清理作业使用Interop,如下所示:

Excel.Application xl;

for (int i = 0; i < 20; i++)
{
    try
    {
        xl = (Excelx.Application)Marshal.GetActiveObject("Excel.Application");
        xl.Visible = true;
        xl.Quit();
    }
    catch (Exception ex)
    {
        break;
    }
}

它的大多数当时,但每隔一段时间我就会得到一个不想死的Excel实例。我可以在第二天早上手动终止任务管理器中的进程,但我还没有找到一种方法来复制那个在前一天晚上运行的清理工作。

如果有人能指出我如何向上面的工作添加后续任务的方向稍微更“粗鲁”并且会杀死任何名为EXCEL.exe的东西,那么它会很感激提示。

另外,我必须为机器上的每个用户运行此作业。如果有办法,我也欢迎这些反馈。

1 个答案:

答案 0 :(得分:0)

看来,关闭流程的蛮力是可行的方法:

foreach (var process in Process.GetProcessesByName("excel"))
{
    process.Kill();
}

https://stackoverflow.com/a/3345421/1278553