清除流氓 Excel 应用程序

Purging Rogue Excel Applications

我有一个作业服务器,可以在 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 实例。我可以在第二天早上在任务管理器中手动终止该进程,但我还没有找到一种方法来在我前一天晚上 运行s 的清理工作中复制它。

如果有人能指出我如何向上面的工作添加后续任务的方向,那就是稍微多 "rude" 并且会杀死任何名为 EXCEL.exe 的东西,我将不胜感激提示。

另外,我必须 运行 为机器上的每个用户完成这项工作。如果有办法解决这个问题,我也欢迎您提供反馈。

看来 brute-force 关闭进程是可行的方法:

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