Хорошо, это хакерское решение, которое я нашел для обнаружения именованных VPN. Он выдаст ошибку, если по какой-либо причине не сможет подключиться к VPN (включая сетевое соединение, VPN не существует и т. Д.).
Специальные коды ошибок для проверки включают в себя:
Ошибка удаленного доступа 800 - Невозможно установить VPN-соединение.
Сервер VPN может быть недоступен или параметры безопасности могут быть недоступны
быть правильно настроен для этого соединения.
Ошибка удаленного доступа 623 - Системе не удалось найти телефонную книгу
запись для этого соединения.
Это не совсем отвечает на мой вопрос в том виде, в котором оно было поставлено (хотя оно работает достаточно хорошо для реальной проблемы).
Dim p As New Process
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = True
p.StartInfo.FileName = "rasdial.exe"
p.StartInfo.Arguments = """Company HQ"""
p.Start()
If Not p.WaitForExit(My.Settings.VpnTimeout) Then
Throw New Exception( _
String.Format("Connecting to ""{0}"" VPN failed after {1}ms", sVpn, My.Settings.VpnTimeout))
End If
If p.ExitCode <> 0 Then
Throw New Exception( _
String.Format("Failed connecting to ""{0}"" with exit code {1}. Errors {2}", sVpn, p.ExitCode, p.StandardOutput.ReadToEnd.Replace(vbCrLf, "")))
End If