Рабочий пример см внизу.
проблема:
На моём домашнем компе созданное удалённое соединение работает
На компе заказчика - не работает - говорит проблема с сертификатом.
Вопрос: как решить эту проблему ?
Я так понимаю
дело в некоей проверке сертификатов
у меня дома вин2000 и я админ и наверно у меня не включена проверка сертификатов
у него ХР и наверно включена проверка сертификатов,
и хотя я на его компе тоже админ, винда не понимает,
кто создал это соединение.
Полагаю выход №1 - отключить эту проверку,
что понизит уровень безопасности и что собственно не годится.
Какие ещё могут быть решения ?
Всем спасибо.
- Код: Выделить всё
'Получает параметры имеющегося соединения
Public Declare Auto Function RasGetEntryProperties Lib "rasapi32.dll" (ByVal IpszPhoneBook As String, ByVal IpszEntry As String, ByRef IpRasEntry As RASENTRY, ByRef IpdwEntryInfoSize As Integer, ByVal devinfo As Integer, ByVal devinfosize As Integer) As Integer
'Записывает параметры нового соединения
Public Declare Auto Function RasSetEntryProperties Lib "rasapi32.dll" (ByVal IpszPhoneBook As String, ByVal IpszEntry As String, ByRef IpRasEntry As RASENTRY, ByRef IpdwEntryInfoSize As Integer, ByVal devinfo As Integer, ByVal devinfosize As Integer) As Integer
'структура с данными соединения
<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Auto)> Structure RASENTRY
Public dwSize As Integer
Public dwfOptions As Integer
Public dwCountrylD As Integer
Public dwCountryCode As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=11)> Public szAreayCode As String '11 символов
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> Public szLocalPhoneNumber As String
Public dwAlternateOffset As Integer
Public ipaddr As Integer
Public ipaddrDns As Integer
Public ipaddrDnsAlt As Integer
Public ipaddrWins As Integer
Public ipaddrWinsAlt As Integer
Public dwFrameSize As Integer
Public dwfNetProtocols As Integer
Public dwFramingProtocol As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szScript As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szAutodialDll As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szAutodialFunc As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public szDeviceType As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> Public szDeviceName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=33)> Public szX25PadType As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szX25Address As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szFacilities As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szllserData As String
Public dwChannels As Integer
Public dwReservedl As Integer
Public dwReserved2 As Integer
Public dwSubEntries As Integer
Public dwDialMode As Integer
Public dwDialExtraPercent As Integer
Public dwDialExtraSampleSeconds As Integer
Public dwHangUpExtraPercent As Integer
Public dwHangUpExtraSampleSeconds As Integer
Public dwIdleDisconnectSeconds As Integer
Public dwType As Integer
Public dwEncryptionType As Integer
Public dwCustomAuthKey As Integer
Public guidId As Guid
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szCustomDialDll As String
Public dwVpnStrategy As Integer
'Этот кусок нужен для ХР -
'буду признателен, если кто подскажет как определить ХР/неХР
'чтоб при ХР использовать эту часть
' Public dwfOptions2 As Integer
' Public dwfOptions3 As Integer
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=253)> Public szDnsSuffix As String
' Public dwTcpWindowsSize As Integer
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szPrerequisitePbk As String
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szPrerequisiteEntry As String
' Public dwRedialCount As Integer
' Public dwRedialPause As Integer
End Structure
'заполнение структуры и Получение данных по клику
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim PhoneBookEntryToGet As String = TextBox1.Text
Dim res As Integer
Dim re As RASENTRY
Dim bufsize As Integer
re.dwSize = Marshal.SizeOf(re)
bufsize = re.dwSize
res = RasGetEntryProperties(Nothing, PhoneBookEntryToGet, re, bufsize, 0, 0)
End Sub
'теперь элементы структуры содержат всю необходимую нам информацию
'например номер телефона получить можно так
Label12.Text = re.szLocalPhoneNumber
'также можно используя RasSetEntryProperties создать/отредактировать нужное соединение
'записав в параметры структуры нужные данные.
'(На самом деле там тоже есть нюансы, которые я сам ещё не понял, но будут вопросы - пишите в форум.)

