Проблема с этим клиентом заключается в том, что его компонент графического интерфейса «vpngui.exe» может быть прерван (не указан в списке процессов), но созданный им сетевой интерфейс останется открытым.
Следовательно, ваша служба не может просто проверить, запущен ли процесс с именем vpngui.exe, и сначала нужно определить, работает ли сетевой интерфейс. Вы можете достичь этого, либо проверив наличие записи в реестре, которая показывает, активен ли туннель (см. Подробности в одном из моих других постов), либо проверив наличие указанного интерфейса (снова см. Мой другой пост). *
Итак, что вам нужно сделать, это
1) проверьте, активен ли туннель
2) (необязательно) проверить, активен ли GUI
Затем вы можете решить, что делать дальше, например, вы можете отключить сетевой интерфейс, используя интерфейс CLI VPN-клиентов cisco (или любой другой параметр на основе Windows), а затем убить графический интерфейс. После этого вы можете использовать интерфейс CLI для запуска нового экземпляра VPN-клиента, который автоматически подключится к учетной записи / login / pcf, которую вы указали в качестве аргумента для команды CLI.
Вот немного кода: он проверит, жива ли часть истории с графическим интерфейсом:
Process[] processlist = Process.GetProcesses();
string theProcessThatISeekIs = "";
foreach (Process theprocess in processlist)
{
if (theprocess.ProcessName.ToString().ToLower() == NameOfTheProcessYouSeek.ToLower())
{
theProcessThatISeekIs = theprocess.ProcessName.ToString();
break;
}
}
Следующий код вернет имя сетевого интерфейса, который использует CISCO, если он возвращает «NotFound», то интерфейс отключен.
string retVal = "";
var nic = NetworkInterface
.GetAllNetworkInterfaces()
.Where(i => i.NetworkInterfaceType != NetworkInterfaceType.Loopback && i.NetworkInterfaceType != NetworkInterfaceType.Tunnel && i.Description == "Cisco Systems VPN Adapter");
var name = nic.FirstOrDefault();
if (name != null)
{
retVal = name.Name.ToString();
}
else
{
retVal = "NotFound";
}
return retVal;
С помощью этих двух фрагментов вы сможете найти решение вашей проблемы.