我正在尝试测试以下代码段。
static void StartAndKill()
{
Process ieProc = Process.Start("iexplore.exe", "www.apress.com");
Console.WriteLine("--> Hit enter to kill {0}\t", ieProc.ProcessName);
Console.ReadLine();
try
{
Console.WriteLine(ieProc.Id);
ieProc.Kill();
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
这应该会杀死Internet Explorer窗口并将其关闭。相反,我得到一个例外:
Cannot process request because the process (7256) has exited.
这种行为的合理解释是什么?
答案 0 :(得分:2)
如果iexplore进程已在运行(检查任务管理器),那么Process.Start可能会使用现有进程 - 但您获取的进程ID不是针对此现有进程,而是启动然后退出的虚拟进程。您可以枚举现有的iexplore进程并检查其标题以找到正确的标题,然后获取其进程ID并将其删除。
答案 1 :(得分:1)
错误消息具有误导性。这个过程没有被杀死的真正原因是Windows 7上的管理权限不是默认的。如果我使用“以管理员身份运行”打开命令提示符,则代码执行它应该执行的操作。我将继续关闭这个问题。
感谢所有回复的人。