wanghong01 发表于 2010-4-24 21:49:59

pppoe客户端自动拨号原理及实现

家庭上网大多采用ADSL拨号上网,很多人使用ADSL网络提供商的拨号软件,可这些软件广告太多,并且还公窃取你的上网习惯等信息,所以可以使用XP自带的拨号软件。一般的XP下ADSL拨号操作如下:开始-附件-通讯-新建连接向导-连接到Internet-手动设置我的连接-用要求用户名和密码的宽带连接来连接,ISP名称随便填写,用户名和密码填写网络服务提供商提供的信息,连接建立好后会在桌面上建立上一个拨号的快捷方式,上网前双击它即可上网。

对于一个家庭用户来说,双击桌面上的连接快捷方式上网并不感觉很麻烦。可是对于小区宽带管理员来说,经常给用户解释怎么新建立ADSL连接还是不方便。可不可以建立一个文件代替上面建立连接的冗长的过程呢?确实可以。

实际上,拨号的过程是由XP中的rasphone.exe程序调用rasphone.pbk配置文件来完成的,我们上面建立连接的过程就是修改 rasphone.pbk配置文件的过程。根据这个原理,我们完全可以由管理员建立一个rasphone.pbk文件,然后用户拷回去后直接双击并填写用户名和密码即可拨号,从而避免了建立拨号连接的冗长的过程。

下面就是一个典型的rasphone.pbk配置文件的内容:
-------------不含此分割线--------------------

Encoding=1
Type=5
AutoLogon=0
UseRasCredentials=0
DialParamsUID=35169031
Guid=634FB3A1DDF5D14F9A87795DF822D9D0
BaseProtocol=1
VpnStrategy=0
ExcludedProtocols=3
LcpExtensions=1
DataEncryption=8
SwCompression=1
NegotiateMultilinkAlways=0
SkipNwcWarning=0
SkipDownLevelDialog=0
SkipDoubleDialDialog=0
DialMode=1
DialPercent=75
DialSeconds=120
HangUpPercent=10
HangUpSeconds=120
OverridePref=15
RedialAttempts=3
RedialSeconds=60
IdleDisconnectSeconds=0
RedialOnLinkFailure=1
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
AuthenticateServer=0
ShareMsFilePrint=0
BindMsNetClient=0
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=
PreferredDevice=
PreferredBps=0
PreferredHwFlow=0
PreferredProtocol=0
PreferredCompression=0
PreferredSpeaker=0
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=0
PreviewPhoneNumber=0
ShowDialingProgress=1
ShowMonitorIconInTaskBar=1
CustomAuthKey=-1
AuthRestrictions=632
TypicalAuth=1
IpPrioritizeRemote=1
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpFrameSize=1006
IpDnsFlags=0
IpNBTFlags=0
TcpWindowSize=0
UseFlags=1
IpSecFlags=0
IpDnsSuffix=

NETCOMPONENTS=
ms_server=0
ms_msclient=0

MEDIA=rastapi
Port=PPPoE6-0
Device=WAN 微型端口 (PPPOE)

DEVICE=PPPoE
PhoneNumber=
AreaCode=
CountryCode=1
CountryID=1
UseDialingRules=0
Comment=
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1

-------------不含此分割线--------------------
说到这里我们怎么让拨号自动完成呢,也就是不用人为双击拨号不用填写用户名和密码,让拨号随系统启动而自动完成呢?

这里又要说到另一个XP自带的拨号程序rasdial.exe程序,这个程序和rasphone.exe的都是用来拨号的,并且都是调用读取 rasphone.pbk配置文件,但rasdial是命令行拨号工具,而rasphone是图形化拨号工具。为了完成自动拨号,我们还是使用命令行拨号工具rasdial比较方便。

下面这行命令就是命令行下的拨号命令,把这个命令写入rasphone.bat脚本文件,并把rasphone.bat和上面提到的 rasphone.pbk文件放到同一个目录中,并让rasphone.bat随系统自启动,即可实现拨号的自动实现。

-------------不含此分割线--------------------
rasdial adsl pppuser001 ppppassword001 /phonebook:rasphone.pbk
-------------不含此分割线--------------------

命令中“adsl”是拨号连接名称,此名称要与rasphone.pbk中的第一行中标识的连接名称相同。pppuser001和 ppppassword001分别是拨号的用户名和密码,各用户要做适当修改。

总结:自动拨号的实现需要3个文件,其中 rasdial.exe、rasphone.pbk、rasphone.bat,其中rasdial.exe由XP自带。管理员只需要建立两个文件 rasphone.pbk和rasphone.bat,各文件内容见上文详述。把rasphone.pbk和rasphone.bat放在同目录中,并让 rasphone.bat自启动即可。


本文出处 : http://www.samool.com/archives/41041/

lynfr8 发表于 2010-4-24 21:55:30

AU3两行代码即可实现自动断线重连
RunWait(@ComSpec & " /c rasdial "&$connectname&" /disconnect","", 0) ;自动断网
RunWait(@ComSpec & " /c rasdial "&$connectname&" "&$ADSLname&" "&$ADSLpassword,"", 0);自动联网

$connectname=ADSl拨号名称
ADSLname=拨号账户
ADSLpassword=拨号密码

ss98998 发表于 2010-5-4 17:55:37

Run(@ComSpec & ' /c rasdial "宽带名称" "用户名" "密码"')
这个怎么样?

117267948 发表于 2010-12-19 08:47:42

回复 2# lynfr8

这个为什么不支持字母,只支持数字,我的账号是字母的,看来还得改一下用

117267948 发表于 2010-12-19 08:50:59

弄明白了,把带字母的string加上""就OK了 谢谢大家分享代码

尘封メ心 发表于 2010-12-22 11:05:03

谢谢楼上的朋友分享经验

cykefu 发表于 2011-5-19 23:40:28

谢谢楼上的朋友分享经验

linzi 发表于 2011-5-20 17:53:54

谢谢分享经验

licunxu0098 发表于 2011-5-23 23:38:13

小手一抖,金币带走

fangbaiyu 发表于 2011-10-24 15:18:47

谢谢分享源码
对cmd还真不怎么熟

ymjssg109 发表于 2011-11-25 01:57:41

看看,学习了

netegg 发表于 2011-11-25 06:37:15

pbk文件里的password字段是什么加密方式

cheng8457 发表于 2011-12-1 08:03:12

謝謝大大分享經驗

iank 发表于 2012-1-5 15:47:38

回复 2# lynfr8


    霸气,看了一天论坛的帖子了 ,发现lyfr8是个大牛逼

rain 发表于 2012-1-10 00:16:16

mark,真的不错啊!
页: [1] 2
查看完整版本: pppoe客户端自动拨号原理及实现