清除流氓 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();
}
我有一个作业服务器,可以在 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();
}