Убить метод не работает - PullRequest
       4

Убить метод не работает

1 голос
/ 14 декабря 2011

Я пытаюсь проверить следующий фрагмент кода.

        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.

Каково логическое объяснение этого поведения?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Если процесс iexplore уже запущен (проверьте диспетчер задач), то Process.Start может использовать существующий процесс - но возвращаемый вами идентификатор процесса не для этого существующего процесса, а фиктивный процесс, который запускается и затем завершается.Вы можете перечислить существующие процессы iexplore и проверить их заголовки, чтобы найти правильный, а затем получить идентификатор процесса и убить его.

1 голос
/ 14 декабря 2011

Сообщение об ошибке вводит в заблуждение.Реальная причина, по которой процесс не был убит, заключается в том, что административные привилегии в Windows 7 не нарушены.Если я открою командную строку с помощью «Запуск от имени администратора», код сделает то, что должен.Я перейду к закрытию этого вопроса.

Спасибо всем, кто ответил.

...