1

我有一个小的 VB.NET 程序,它创建一个 VPN 连接。这一直有效,直到(包括)Windows 10 Update 1709。但自从 Update 1803 以来,我总是遇到一个例外:

DotRas.RasException:检测到不正确的结构大小。在 DotRas.Internal.ThrowHelper.ThrowRasException(Int32 errorCode) 在 DotRas.Internal.RasHelper.GetEntryProperties(RasPhoneBook phoneBook, String entryName) 在 DotRas.RasEntryCollection.Load() 在 DotRas.RasPhoneBook.Open(String phoneBookPath)

遵循我的工作 Code Sub(直到 1709 年)

Private Sub CreateVPN(VpnName As String, Destination As String, bAllUsers As Boolean)
    Dim PresharedKey As String = "XXXXXXXXXXX"

    Try
        Dim PhoneBook As New RasPhoneBook
        Dim sUsedPhoneBook As String = sPhoneBook
        If bAllUsers Then sUsedPhoneBook = sAllUserPhoneBook

        PhoneBook.Open(sUsedPhoneBook)

        'First remove existing VPN with same name, if exist!
        Try
            PhoneBook.Entries.Remove(VpnName)
        Catch ex As Exception
        End Try

        Dim VpnEntry As RasEntry = RasEntry.CreateVpnEntry(VpnName, Destination, DotRas.RasVpnStrategy.L2tpOnly, DotRas.RasDevice.Create(VpnName, DotRas.RasDeviceType.Vpn))
        VpnEntry.Options.UsePreSharedKey = True
        VpnEntry.Options.IPHeaderCompression = True
        VpnEntry.Options.SoftwareCompression = True
        VpnEntry.Options.NetworkLogOn = True
        VpnEntry.NetworkProtocols.IPv6 = False
        VpnEntry.Options.RequireEap = False
        VpnEntry.Options.RequirePap = True
        VpnEntry.Options.RequireChap = True
        VpnEntry.Options.RequireMSChap2 = True
        VpnEntry.Options.RequireEncryptedPassword = False
        VpnEntry.Options.UseLogOnCredentials = False
        VpnEntry.Options.CacheCredentials = False
        VpnEntry.DnsSuffix = "YYYYYYY.local"
        VpnEntry.Options.UseDnsSuffixForRegistration = True

       ' *********** THE FOLLOWING LINE WILL CRASH ON WINDOWS 10 1803 **********
        PhoneBook.Entries.Add(VpnEntry)
        VpnEntry.UpdateCredentials(RasPreSharedKey.Client, PresharedKey)
        If txt_Username.Text <> "" AndAlso txt_Password.Text <> "" Then
            VpnEntry.UpdateCredentials(New Net.NetworkCredential(txt_Username.Text, txt_Password.Text), False)
            VpnEntry.Options.CacheCredentials = True
            VpnEntry.Update()
        End If

        PhoneBook.Dispose()

        txt_Status.Text = VpnName & " successful added."
        txt_Status.ForeColor = Color.DarkGreen
    Catch ex As Exception
        Console.WriteLine("Error while adding " & VpnName & "." & Environment.NewLine & ex.ToString)
    Finally
    End Try
End Sub

有人可以帮助我吗?我没有找到更新的 DotRAS.dll。最好是没有外部 DLL 的工作示例。

先感谢您。

4

0 回答 0