创建拨号错误
Option Explicit On
Imports System
Imports System.Text
Imports Microsoft.Win32
Imports System.Runtime.InteropServices
Public Class FormMain
Public Const MAX_PATH As Int32 = 260
Public Const RAS_MaxPATH As Int32 = 259
Public Const RAS_MaxUserName As Int32 = 256
Public Const RAS_MaxPassword As Int32 = 256
Public Const RAS_MaxDomain As Int32 = 15
Public Const RAS_MaxX25PadType As Int32 = 31
Public Const RAS_MaxDeviceType As Int32 = 16
Public Const RAS_MaxPhoneNumber As Int32 = 128
Public Const RAS_MaxIpAddress As Int32 = 15
Public Const RAS_MaxIpxAddress As Int32 = 21
Public Const RAS_MaxEntryName As Int32 = 256
Public Const RAS_MaxDeviceName As Int32 = 128
Public Const RAS_MaxCallbackNumber As Int32 = RAS_MaxPhoneNumber
Public Const RAS_MaxAreaCode As Int32 = 10
Public Const RAS_MaxPadType As Int32 = 32
Public Const RAS_MaxX25Address As Int32 = 200
Public Const RAS_MaxFacilities As Int32 = 200
Public Const RAS_MaxUserData As Int32 = 200
public const RAS_MaxReplyMessage As Int32 = 1024
Public Const RAS_MaxDnsSuffix As Int32 = 256
Public Structure GUID
Public Data1 As UInteger
Public Data2 As UShort
Public Data3 As UShort
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> Public data4 As String
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure RASDIALPARAMS
Public Size As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxEntryName + 1)> Public EntryName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPhoneNumber + 1)> Public PhoneNumber As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxCallbackNumber + 1)> Public CallBackNumber As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxUserName + 1)> Public UserName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPassword + 1)> Public Password As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxDomain + 1)> Public Domain As String
Public dwSubEntry As Integer
Public dwCallbackId As UInt32
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure RASIPADDR
Public a As Byte
Public b As Byte
Public c As Byte
Public d As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure RASENTRY
Public dwSize As Int32
Public dwfOptions As Int32
Public dwCountryID As Int32
Public dwCountryCode As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxAreaCode + 1)> Public szAreaCode As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPhoneNumber + 1)> Public szLocalPhoneNumber As String
Public dwAlternateOffset As Int32
Public ipaddr As RASIPADDR
Public ipaddrDns As RASIPADDR
Public ipaddrDnsAlt As RASIPADDR
Public ipaddrWins As RASIPADDR
Public ipaddrWinsAlt As RASIPADDR
Public dwFrameSize As Int32
Public dwfNetProtocols As Int32
Public dwFramingProtocol As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPATH)> Public szScript As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPATH)> Public szAutodialDll As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxPATH)> Public szAutodialFunc As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxDeviceType + 1)> Public szDeviceType As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxDeviceName + 1)> Public szDeviceName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxX25PadType + 1)> Public szX25PadType As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxX25Address + 1)> Public szX25Address As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxFacilities + 1)> Public szX25Facilities As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxUserData + 1)> Public szX25UserData As String
Public dwChannels As Int32
Public dwReserved1 As Int32
Public dwReserved2 As Int32
Public dwSubEntries As Int32
Public dwDialMode As Int32
Public dwDialExtraPercent As Int32
Public dwDialExtraSampleSeconds As Int32
Public dwHangUpExtraPercent As Int32
Public dwHangUpExtraSampleSeconds As Int32
Public dwIdleDisconnectSeconds As Int32
Public dwType As Int32
Public dwEncryptionType As Int32
Public dwCustomAuthKey As Int32
Public guidId As GUID
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_PATH)> Public szCustomDialDll As String
Public dwVpnStrategy As Int32
Public dwfOptions2 As Int32
Public dwfOptions3 As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxDnsSuffix)> Public szDnsSuffix As String
Public dwTcpWindowSize As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_PATH)> Public szPrerequisitePbk As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MaxEntryName + 1)> Public szPrerequisiteEntry As String
Public dwRedialCount As Int32
Public dwRedialPause As Int32
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure RASCREDENTIALS
Public dwSize As Integer
Public dwMask As Integer
Public szUserName() As Byte
Public szPassword() As Byte
Public szDomain() As Byte
End Structure
Public Declare Auto Function RasSetEntryDialParams Lib "rasapi32.dll" (ByVal PhoneBook As String, ByRef DialParams As RASDIALPARAMS, ByRef Password As Int32) As Int32
Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Create_PPPoE_Connection("PPPOE1", "test", "123456")
End Sub
'==================================================================================
'函数名称 Create_PPPoE_Connection(ByVal sEntryName As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean
'参 数 sEntryName 连接名称
' sUserName 用户名
' sPassword 密码
'描 述 创建PPPOE拨号连接
'示 例 Create_PPPoE_Connection("宽带连接","user01","123456")
'==================================================================================
Private Const ET_None As Integer = 0 ' No encryption
Private Const ET_Require As Integer = 1 ' Require Encryption
Private Const ET_RequireMax As Integer = 2 ' Require max encryption
Private Const ET_Optional As Integer = 3 ' Do encryption if possible. None Ok.
Private Const VS_Default As Integer = 0 ' default (PPTP for now)
Private Const VS_PptpOnly As Integer = 1 ' Only PPTP is attempted.
Private Const VS_PptpFirst As Integer = 2 ' PPTP is tried first.
Private Const VS_L2tpOnly As Integer = 3 ' Only L2TP is attempted.
Private Const VS_L2tpFirst As Integer = 4 ' L2TP is tried first.
Private Const RASET_Phone As Integer = 1 ' Phone lines: modem, ISDN, X.25, etc
Private Const RASET_Vpn As Integer = 2 ' Virtual private network
Private Const RASET_Direct As Integer = 3 ' Direct connect: serial, parallel
Private Const RASET_Internet As Integer = 4 ' BaseCamp internet
Private Const RASET_Broadband As Integer = 5 ' Broadband
Private Declare Function RasSetEntryProperties Lib "rasapi32" Alias "RasSetEntryPropertiesA" (ByVal lpszPhonebook As String, ByVal lpszEntry As String, ByVal lpRasEntry As RASENTRY, ByVal dwEntryInfoSize As Integer, ByVal lpbDeviceInfo As Integer, ByVal dwDeviceInfoSize As Integer) As Integer
Private Declare Function RasSetCredentials Lib "rasapi32" Alias "RasSetCredentialsA" (ByVal lpszPhonebook As String, ByVal lpszEntry As String, ByVal lpCredentials As RASCREDENTIALS, ByVal fClearCredentials As Integer) As Integer
Private Function Create_PPPoE_Connection(ByVal sEntryName As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean
Create_PPPoE_Connection = False
Dim re As New RASENTRY
Dim sDeviceName As String, sDeviceType As String
sDeviceName = "WAN 微型端口 (PPTP)"
sDeviceType = "PPPoE"
With re
.dwSize = Marshal.SizeOf(re)
.dwCountryCode = 86
.dwCountryID = 86
.dwDialExtraPercent = 75
.dwDialExtraSampleSeconds = 120
.dwDialMode = 1
.dwEncryptionType = 3
.dwfNetProtocols = 4
.dwfOptions = 1024262928
.dwfOptions2 = 367
.dwFramingProtocol = 1
.dwHangUpExtraPercent = 10
.dwHangUpExtraSampleSeconds = 120
.dwRedialCount = 3
.dwRedialPause = 60
.dwType = RASET_Broadband
.szDeviceName = sDeviceName
.szDeviceType = sDeviceType
End With
Dim params As New RASDIALPARAMS
params.Size = Marshal.SizeOf(params)
params.EntryName = sEntryName
params.UserName = sUserName
params.Password = sPassword
Dim bFlag As Int32 = 0
RasSetEntryProperties(vbNullString, sEntryName, re, Marshal.SizeOf(re), 0, 0)
End Function
End Class