BasmaSH Ответов: 1

Процесс.убить() ; исключение Win32 отказано в доступе.


У меня есть список прокси-серверов, затем я открываю список URL-адресов в каждом из них, а затем закрываю chrome после следующего прокси-сервера .
после закрытия chrome возникает исключение win32.

Что я уже пробовал:

если (List_IPs_Ports.Count >0)
{
если (ListUrls.Count() > 0)
{
Process BrowserProcess = новый процесс();
ProcessStartInfo psiObj = новый ProcessStartInfo("chrome");

по каждому элементу (строка прокси в List_IPs_Ports)
{
reg.SetValue("ProxyEnable", 1);
reg.SetValue("ProxyServer", прокси-сервер);
BrowserProcess.Информацию = psiObj;
BrowserProcess.Начать();
foreach (строковый url-адрес в ListUrls)
{
Процесс.Начало(url);
Нить.Время сна);
}
Process[] processNames = процесс.GetProcessesByName("chrome");
processNames.Первый().Убить();

/* foreach (элемент процесса в именах процессов)
{
if (processNames.Длина > 1)

товар.Убить();
}*/
}

reg.SetValue("ProxyEnable", 0);
}
}

1 Ответов

Рейтинг:
10

Jochen Arndt

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

Тогда вы можете игнорировать исключение (просто поймать его).

Но вам следует подумать о другой реализации, потому что ваше приложение также убьет хром экземпляры, запущенные тем же пользователем, что и ваше приложение. Такая реализация может хранить идентификаторы запущенных процессов и использовать их для уничтожения процессов.


BasmaSH

Вы правы.
Поэтому я использовал пространство имен Selenium, у которого есть свой собственный браузер.
http://jayeshsorathia.blogspot.com.eg/2014/09/selenium-c-how-to-open-chrome-broswer-in-selenium-webdriver-using-asp-net.html
а потом я его убиваю .