C#.NET获取拨号连接的宽带连接方法

 更新时间:2015年06月17日 09:35:24   作者:RobinTang  
这篇文章主要介绍了C#.NET获取拨号连接的宽带连接方法,实例演示了一个C#封装的ADSL拨号连接类及其使用方法,需要的朋友可以参考下

本文实例讲述了C#.NET获取拨号连接的宽带连接方法。分享给大家供大家参考。具体如下:

该代码直接可以用,我在XP VS2010 NET3.5上测试通过。

首先是ASDL的封装

class SinASDL
{
  //ASDL在注册表中的存放位置,这个是针对WinXP的,
  //不知道Win7是否是这个,待验证
  private static String _adlskeys = @"RemoteAccess\Profile";
  public static String adlskeys
  {
    get
    {
      return _adlskeys;
    }
  }
  /// <summary>
  /// 获取本机的拨号名称,也就是本机上所有的拨号
  /// </summary>
  /// <returns></returns>
  public static String[] GetASDLNames()
  {
    RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(adlskeys);
    if (RegKey != null)
      return RegKey.GetSubKeyNames();
    else
      return null;
  }
  private String _asdlname = null;
  private ProcessWindowStyle _windowstyle = ProcessWindowStyle.Hidden;
  /// <summary>
  /// 实例化一个ASDL连接
  /// </summary>
  /// <param name="asdlname">ASDL名称,如“宽带连接”</param>
  /// <param name="username">用户名</param>
  /// <param name="password">密码</param>
  /// <param name="windowstyle">窗口显示方式,默认为因此拨号过程</param>
  public SinASDL(String asdlname, String username = null, String password = null, ProcessWindowStyle windowstyle = ProcessWindowStyle.Hidden)
  {
    this.ASDLName = asdlname;
    this.Username = username;
    this.Password = password;
    this.WindowStyle = windowstyle;
  }
  /// <summary>
  /// 拨号名称
  /// </summary>
  public String ASDLName
  {
    get
    {
      return this._asdlname;
    }
    set
    {
      this._asdlname = value;
    }
  }
  /// <summary>
  /// 拨号进程的窗口方式
  /// </summary>
  public ProcessWindowStyle WindowStyle
  {
    get
    {
      return this._windowstyle;
    }
    set
    {
      this._windowstyle = value;
    }
  }
  private String _username = null;  //用户名
  private String _password = null;  //密码
  /// <summary>
  /// 用户名
  /// </summary>
  public String Username
  {
    get
    {
      return this._username;
    }
    set
    {
      this._username = value;
    }
  }
  /// <summary>
  /// 密码
  /// </summary>
  public String Password
  {
    get
    {
      return this._password;
    }
    set
    {
      this._password = value;
    }
  }
  /// <summary>
  /// 开始拨号
  /// </summary>
  /// <returns>返回拨号进程的返回值</returns>
  public int Connect()
  {
    Process pro = new Process();
    pro.StartInfo.FileName = "rasdial.exe";
    pro.StartInfo.Arguments = this.ASDLName + " " + this.Username + " " + this.Password;
    pro.StartInfo.WindowStyle = this.WindowStyle;
    pro.Start();
    pro.WaitForExit();
    return pro.ExitCode;
  }
  /// <summary>
  /// 端口连接
  /// </summary>
  /// <returns></returns>
  public int Disconnect()
  {
    Process pro = new Process();
    pro.StartInfo.FileName = "rasdial.exe";
    pro.StartInfo.Arguments = this.ASDLName + " /DISCONNECT";
    pro.StartInfo.WindowStyle = this.WindowStyle;
    pro.Start();
    pro.WaitForExit();
    return pro.ExitCode;
  }
}

下面是使用测试:

//SinASDL asdl = new SinASDL("宽带连接", "08793312221", "123456");
//宽带连接
//使用枚举到的第一个进行拨号
SinASDL asdl = new SinASDL(SinASDL.GetASDLNames()[0], "08793312221", "123456", System.Diagnostics.ProcessWindowStyle.Normal);
if (asdl.Connect() == 0)
{
  MessageBox.Show("Success");
}
else
{
  MessageBox.Show("Fail");
}

我自己测试的时候是通过的。

如果电脑上不止一个拨号的,那么你可以用SinASDL.GetASDLNames()进行枚举。

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • 如何从dump文件中提取出C#源代码

    如何从dump文件中提取出C#源代码

    这篇文章主要介绍了如何从dump文件中提取出C#源代码,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#中使用Join与GroupJoin将两个集合进行关联与分组

    C#中使用Join与GroupJoin将两个集合进行关联与分组

    这篇文章主要介绍了C#中使用Join与GroupJoin将两个集合进行关联与分组,文中分别对Join和GroupJoin的用法进行详细说明,需要的朋友可以参考下
    2017-12-12
  • C#利用iTextSharp组件给PDF文档添加图片/文字水印

    C#利用iTextSharp组件给PDF文档添加图片/文字水印

    这篇文章主要给大家介绍了关于如何C#利用iTextSharp组件给PDF文档添加图片/文字水印的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • .Net Winform开发笔记(四)透过现象看本质

    .Net Winform开发笔记(四)透过现象看本质

    本文将从Winform应用程序中的Program.cs文件的第一行代码开始逐步分析一个Winform应用程序到底是怎样从出生走向死亡
    2013-01-01
  • 深入学习C#网络编程之HTTP应用编程(上)

    深入学习C#网络编程之HTTP应用编程(上)

    这篇文章主要介绍了如何学习C#网络编程之HTTP应用编程的相关知识,文中讲解的非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C# 基础之运算符

    C# 基础之运算符

    这篇文章介绍了C# 运算符的基础知识,有需要的朋友可以参考一下
    2013-09-09
  • C#组合模式实例详解

    C#组合模式实例详解

    这篇文章主要介绍了C#组合模式,实例分析了C#实现组合模式的原理与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C# 9.0 特性全面总结

    C# 9.0 特性全面总结

    这篇文章主要介绍了C# 9.0 特性的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C# winForm实现的气泡提示窗口功能示例

    C# winForm实现的气泡提示窗口功能示例

    这篇文章主要介绍了C# winForm实现的气泡提示窗口功能,涉及C# winForm窗口属性与设置相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • C# 忽略大小写进行字符串比较

    C# 忽略大小写进行字符串比较

    这篇文章主要介绍了C# 字符串比较忽略大小写的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02

最新评论