Страница: 1 |
Страница: 1 |
Вопрос: Новое соединение и вдруг какой то сертификат
Добавлено: 16.10.05 18:38
Автор вопроса: student-uni
Создаю совей прогой новое удалённое соединение.
Рабочий пример см внизу.
проблема:
На моём домашнем компе созданное удалённое соединение работает
На компе заказчика - не работает - говорит проблема с сертификатом.
Вопрос: как решить эту проблему ?
Я так понимаю
дело в некоей проверке сертификатов
у меня дома вин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 создать/отредактировать нужное соединение
'записав в параметры структуры нужные данные.
'(На самом деле там тоже есть нюансы, которые я сам ещё не понял, но будут вопросы - пишите в форум.)
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 16.10.05 19:54
Что-то мне подсказывает, что этот вопрос надо поместить в форум ".NET", а то я уже кинулся объяснять, как отличить XP от не-XP
Номер ответа: 2
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #2
Добавлено: 17.10.05 01:11
По поводу xp/не xp:
Наверняка это можно задать просто размером структуры. Т.е. смотришь размер при полузакомментированной структуре (чисто глазками и чисто ручками записываем на чисто бумажке), потом записываешь размер полной структуры.
И в коде забиваешь:
re.dwSize = constXPSIZE
Else
re.dwSize = constNOTXPSIZE
End If
Почти наверняка должно проканать...
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 17.10.05 01:16
Кстати, по поводу сертификатов - ты пробовал сначала вытащить какою-нить существующую энтрю, потом изменить в ней тока некотрые данные и добавить как новую?
Номер ответа: 4
Автор ответа:
student-uni
Вопросов: 122
Ответов: 257
Профиль | | #4
Добавлено: 17.10.05 22:20
2Neco, - твоё решение Хр-неХр мне приходило в голову, оно лобовое, но всё равно спасибо.
А чё то сегодня этих запросов по сертификату небыло. Мистификация какая то.!!!
У меня подозрения, что размеры элементов структуры не все правильны.
А дело вот в чём.
Считываю параметры имеющегося соединения,
а потом функцией СЕТ создаю с новым именем своё.
И тут подстава с параметром dwFramingProtocol:
в параметре dwFramingProtocol - была 1
а для нового соединения попадает 4 !!!!!
/этот параметр отвечает за протокол передачи/
/птичка на ТСП/
Дык вот я беру и нахалом туда пишу 4
и что вы думаете я получаю - 1
Вопрос: Чё за бред такой ?
типа байты в этот параметр наизнанку записываются
0001=1
0100=4
Может кто сталкивался ?
И ещё проблема
со следующим параметром dwfOptions - он стоит первым после Сайза в структуре
так вот у оригинального соединения
было 1 032 651 544
что в двоичке:
111101100011010000001100011000
а у нового 1 033 700 120
что в двоичке:
111101100111010000001100011000
разница в десятом слева бите !!!!
мне то в данный момент побарабану,
но может позже прийдётся вникать,
поэтому хотелось бы понять
какова природа этого явления.
Всем спасибо
Номер ответа: 5
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #5
Добавлено: 31.10.05 12:24
If IsXP Then
re.dwSize = constXPSIZE
Else
re.dwSize = constNOTXPSIZE
End If
Хм... Я в исходниках одной программы видел определение оси через
пространства типа Enviroment. Могу ошибаться - сейчас исходников
нету..
Номер ответа: 6
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #6
Добавлено: 31.10.05 13:07
ХМ
Console.WriteLine("OS: {0}", Environment.OSVersion.ToString())
Номер ответа: 7
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #7
Добавлено: 31.10.05 21:35
не об том речь, пацаны. 8)