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

本文实例讲述了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#程序设计有所帮助。

(0)

相关推荐

  • C#中判断本地系统的网络连接状态的方法

    函数InternetGetConnectedState返回本地系统的网络连接状态. 语法: BOOL InternetGetConnectedState( __out LPDWORD lpdwFlags, __in DWORD dwReserved ); 参数: lpdwFlags[out] 指向一个变量,该变量接收连接描述内容.该参数在函数返回FLASE时仍可以返回一个有效的标记.该参数可以为下列值的一个或多个. 值 含义 INTERNET_CONNECTION_CONFIGURED0x40

  • C#实现路由器断开连接,更改公网ip的实例代码

    复制代码 代码如下: public static void Disconnect(){    string url = "断 线";    string uri = "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=" + System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.GetEncoding("gb2312")) + &

  • 用C#写的ADSL拨号程序的代码示例

    <!--StartFragment-->ADSL自动拨号类,前提是在系统中已经有了一个宽带拨号连接 调用代码: RASDisplay ras = new RASDisplay(); ras.Disconnect();//断线 ras.Connect("adsl");//拨号 复制代码 代码如下: using System;  using System.Runtime.InteropServices;  public struct RASCONN  {      public

  • c#判断网络连接状态的示例分享

    复制代码 代码如下: public partial class Form1 : Form { [DllImport("wininet.dll")] private extern static bool getInterState(out int conn, int val); public Form1()  {InitializeComponent();  getNet(); } //判断当前是否连接入Internet网络private void getNet(){int Out;if

  • c#判断网络连接状态

    运行效果 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;using System.Net.NetworkInformation; namespace ConsoleApplication1{    class Program    {        public static void Main(string[] args)        {            string url = "

  • c# 连接字符串数据库服务器端口号 .net状态服务器端口号

    正常的数据库连接字符串配置,这是在MSSQL服务器端口是1433(默认)的情况下. <add key="Article" value="server=.;uid=Admin;pwd=admin;database=db;"></add> 但是有时候,为了数据库服务器安全,这个端口会被改成其它的,这时再连接数据库可能报出以下错误: 在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允

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

    本文实例讲述了C#.NET获取拨号连接的宽带连接方法.分享给大家供大家参考.具体如下: 该代码直接可以用,我在XP VS2010 NET3.5上测试通过. 首先是ASDL的封装 class SinASDL { //ASDL在注册表中的存放位置,这个是针对WinXP的, //不知道Win7是否是这个,待验证 private static String _adlskeys = @"RemoteAccess\Profile"; public static String adlskeys {

  • Python获取当前公网ip并自动断开宽带连接实例代码

    今天写了一个获取当前公网ip并且自动断开宽带连接的文件,和大家分享下. 这个文件的具体用途大家懂的,可以尽管拿去用,不过目前只适用于Windows平台,我的Python版本是2.7的,win32ras模块需要下载pywin32. 代码如下: #!coding: cp936 import win32ras import time,os def Connect(dialname, account, passwd): dial_params = (dialname, '', '', account,

  • ubuntu16.04设置宽带连接的图文教程

    第一步,安装pppoecof 打开终端,输入命令sudo apt-get install pppoeconf. 安装成功之后,开始手动配置. 第二步,配置连接 打开终端,输入命令pppoeconf. 接下来会看到一系列配置信息,包括用户名.密码(宽带连接的用户名密码),配置好之后会有一些提示信息,一路选择yes即可.到此,宽带连接已经成功连上,Plugin rp-pppoe.so loaded.此信息说明连接成功. 下次开机时手动连接 打开终端,输入命令pon dsl-provider即可连接,

  • 多种获取远程连接access数据库的方法

    远程(如通过互联网)连接access数据库的方法  前段时间很多人问远程(如通过互联网)连接access数据库的方法,最近写了个例子,与大家共享:  使用了TCP/IP,ADO及XML(需要安装Microsoft XML 4.0.).分服务器和客户端两部分,服务器可以多用户同时连接.远程连接Access数据库有很多方法,我以前已经比较详细的回答过(见下面所列的5种方法),我现在这个例子属于其中的第3种方法(不需要使用RDS或Web服务器).  --------------------------

  • Android编程实现获取当前连接wifi名字的方法

    本文实例讲述了Android编程实现获取当前连接wifi名字的方法.分享给大家供大家参考,具体如下: WifiManager wifiMgr = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE); int wifiState = wifiMgr.getWifiState(); WifiInfo info = wifiMgr.getConnectionInfo(); String wifiId = info != null

  • Android获取热点主机ip和连接热点手机ip的代码

    其中定义WIFI AP的几个状态 public static final int WIFI_AP_STATE_DISABLING = 10; public static final int WIFI_AP_STATE_DISABLED = 11; public static final int WIFI_AP_STATE_ENABLING = 12; public static final int WIFI_AP_STATE_ENABLED = 13; public static final i

  • Python简单连接MongoDB数据库的方法

    本文实例讲述了Python连接MongoDB数据库的方法.分享给大家供大家参考,具体如下: Python使用pymongo操作MongoDB数据库,首先需要安装pymongo模块,如下示例是通过pymongo连接MongoDB数据库,带用户名和密码: from pymongo import MongoClient import datetime client = MongoClient('mongodb://tanteng:123456@localhost:27017/') db = clien

  • 浅析mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接.那么这时候就是非交互式操作. 在之前,我基本上不关系这两个属性,都是用的是mysql服务商推荐的默认值,就是8小时. 但是,从昨天开始,由于在新网租用了一个空间,而他的

  • 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

  • java客户端Jedis操作Redis Sentinel 连接池的实现方法

    pom.xml配置 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.0.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients<

随机推荐