我可以连接到使用以下代码创建的现有VPN。
string args = string.Format("{0} {1} {2}", connVpnName, connUserName, connPassWord);
var proc = new System.Diagnostics.Process
{
StartInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = "C:\\WINDOWS\\system32\\rasdial.exe",
Arguments = args,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
string output = "";
while (!proc.StandardOutput.EndOfStream)
{
output += proc.StandardOutput.ReadLine();
txtOutput.Text += proc.StandardOutput.ReadLine();
}
我需要知道连接是否成功,使用了错误的凭据,VPN是否不存在,或者ip是否未联机。
我的第一个想法是从命令提示中获取输出并搜索“已连接”等关键字。这种方法的问题是我的用户使用多种语言,关键字也不同。
我可以使用其他方法来实现这一目标吗?
答案 0 :(得分:1)
使用DotRAS这个库是windows api的包装器。几乎所有功能都记录在MSDN中。
答案 1 :(得分:0)
我找到了答案:
proc.Start();
//het resultaat bekijken
proc.WaitForExit();
switch (proc.ExitCode)
{
case 0: //connection succeeded
MessageBox.Show("Je bent geconnecteerd met de VPN");
isConnectedVPN = true;
btnConnectToVPN.Text = "Stop VPN";
break;
case 691: //wrong credentials
MessageBox.Show("De username en/of het wachtwoord kloppen niet.");
break;
case 623: // The VPN doesn't excist
MessageBox.Show("Deze VPN staat niet tussen de bestaande VPN's.");
break;
case 868: //the IP or domainname can't be found
MessageBox.Show("Het ip-adres of de domeinnaam kan niet gevonden worden");
break;
default: //other faults
MessageBox.Show("fout " + proc.ExitCode.ToString());
break;
}