嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
通过dotras.dll拨号
private static RasVpnStrategy rasstart = RasVpnStrategy.Default;
private static RasPhoneBook pb = new RasPhoneBook();
private static readonly string VPNNAME = "nuobin";
private static RasDialer dialer = new RasDialer();
public delegate void DialStateChangeHandler(RasDialer dialer, StateChangedEventArgs e);
public delegate void DialAsyncCompleteHandler(RasDialer dialer, DialCompletedEventArgs e);
public static event DialAsyncCompleteHandler DialAsyncComplete;
static VPNConnectHelper()
{
pb.Open();
dialer.EntryName = VPNNAME;
dialer.PhoneBookPath = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers);
dialer.DialCompleted = new EventHandler<DialCompletedEventArgs>(dialer_DialCompleted);
}
private static void CreateOrUpdateVPNEntry(string ip, string user, string pwd, string vpntype)
{
RasEntry entry;
if (!pb.Entries.Contains(VPNNAME))
{
if (vpntype == "PPTP")
{
rasstart = RasVpnStrategy.PptpOnly;
entry = RasEntry.CreateVpnEntry(VPNNAME, ip, rasstart, RasDevice.GetDeviceByName("(PPTP)", RasDeviceType.Vpn));
}
else if (vpntype == "L2TP")
{
rasstart = RasVpnStrategy.L2tpOnly;
entry = RasEntry.CreateVpnEntry(VPNNAME, ip, rasstart, RasDevice.GetDeviceByName("(L2TP)", RasDeviceType.Vpn));
}
else
{
rasstart = RasVpnStrategy.Default;
entry = RasEntry.CreateVpnEntry(VPNNAME, ip, rasstart, RasDevice.GetDeviceByName("(PPTP)", RasDeviceType.Vpn));
}
pb.Entries.Add(entry);
}
else
{
entry = pb.Entries[VPNNAME];
entry.PhoneNumber = ip;
IPAddress _ip;
IPAddress.TryParse(ip, out _ip);
entry.IPAddress = _ip;
}
NetworkCredential nc = new NetworkCredential(user, pwd);
entry.UpdateCredentials(nc);
entry.Update();
}
public static void DialAsync(string ip, string user, string pwd, string vpntype)
{
CreateOrUpdateVPNEntry(ip, user, pwd, vpntype);
Disconnect();
dialer.DialAsync();
}
public static void Dial(string ip, string user, string pwd, string vpntype)
{
CreateOrUpdateVPNEntry(ip, user, pwd, vpntype);
Disconnect();
dialer.Dial();
}
public static void CancelDialAsync()
{
dialer.DialAsyncCancel();
}
public static void Disconnect()
{
dialer.DialAsyncCancel();
foreach (RasConnection conn in dialer.GetActiveConnections())
{
if (conn.EntryName == VPNNAME)
{
conn.HangUp();
return;
}
}
}
private static void dialer_DialCompleted(object sender, DialCompletedEventArgs e)
{
DialAsyncComplete((RasDialer)sender, e);
}
}