Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание VPN подкючение / 5 сообщений из 5, страница 1 из 1
09.07.2017, 13:30:20
    #39485304
Yus
Yus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VPN подкючение
Доброго времени суток!!!
Пытаюсь написать утилиту, которая бы создавала VPN соединение и запускала бы его, затем устанавливала подключение к удаленному рабочему столу.
Перерыл много всего. Нашел файл ras.pas. Удалось создать соединение, НО. Модуль очень старый, часть структур в нем не описана.
Пытаюсь доописать структуры, после добавления в структуру каких-либо параметров перестает создавать соединение, причем молча(((

Например добавляю(в конце структуры) параметр dwfOptions2: LongInt;

Как только добавил - сразу же перестает создаваться соединение

Может я изобретаю велосипед и все давно уже придумано....

Если есть к-л альтернативные варианты, или у кого современные готовые модули - буду признателен з помощь?

Среда разработки XE3, Windows 8.1


Вот код процедуры создания соединения.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
procedure TForm1.Button1Click(Sender: TObject);
 VAR
  RE: TRasEntry;
  DEV: array[1..100] of TRasDevInfo;
  i, j,cnt: integer;
begin
 j := sizeof(DEV)*100;
DEV[1].dwSize := sizeof(TRASDEVINFO);


Fillchar(RE, sizeof(TRasEntry), 0);
RE.dwSize := sizeof(TRasEntry);

RE.dwCountryID := 7;
RE.dwCountryCode := 7;
RE.szAreaCode := '';
RE.szLocalPhoneNumber := 'ххх.ххх.хх.ххх';

RE.dwfNetProtocols := RASNP_Ip;
RE.dwFramingProtocol := RASFP_Ppp;
RE.szDeviceType := 'Vpn';


RE.szDeviceName := 'WAN Miniport (L2PTP)';

try
i := RasSetEntryPropertiesA(nil, 'DV TEST', @RE, sizeof(TRasEntry), nil, 0);
if i = ERROR_BUFFER_INVALID then Memo1.Lines.Add('The address or buffer specified by lpRasEntry is invalid');
if i = ERROR_CANNOT_OPEN_PHONEBOOK then Memo1.Lines.Add('The phone book is corrupted or missing components');
except
Memo1.Lines.Add('Ошибка');
end;

end;

Это код структуры, в которую пытаюсь добавить параметр

 (* A RAS phonebook entry.
*)
  LPRasEntryA = ^TRasEntryA;
  TRasEntryA = record
    dwSize,
    dwfOptions,
    //
    // Location/phone number.
    //
    dwCountryID,
    dwCountryCode: Longint;
    szAreaCode: array[0.. RAS_MaxAreaCode] of AnsiChar;
    szLocalPhoneNumber: array[0..RAS_MaxPhoneNumber] of AnsiChar;
    dwAlternatesOffset: Longint;
    //
    // PPP/Ip
    //
    ipaddr,
    ipaddrDns,
    ipaddrDnsAlt,
    ipaddrWins,
    ipaddrWinsAlt: TRasIPAddr;
    //
    // Framing
    //
    dwFrameSize,
    dwfNetProtocols,
    dwFramingProtocol: Longint;
    //
    // Scripting
    //
    szScript: Array[0..MAX_PATH - 1] of AnsiChar;
    //
    // AutoDial
    //
    szAutodialDll: Array [0..MAX_PATH - 1] of AnsiChar;
    szAutodialFunc: Array [0..MAX_PATH - 1] of AnsiChar;
    //
    // Device
    //
    szDeviceType: Array [0..RAS_MaxDeviceType] of AnsiChar;
    szDeviceName: Array [0..RAS_MaxDeviceName] of AnsiChar;
    //
    // X.25
    //
    szX25PadType: Array [0..RAS_MaxPadType] of AnsiChar;
    szX25Address: Array [0..RAS_MaxX25Address] of AnsiChar;
    szX25Facilities: Array [0..RAS_MaxFacilities] of AnsiChar;
    szX25UserData: Array [0..RAS_MaxUserData] of AnsiChar;
    dwChannels: Longint;

    //
    // Reserved
    //
    dwReserved1,
    dwReserved2: Longint;
    //Fabrika

    //dwVpnStrategy: Longint;

{$IFDEF WINVER41}
    //
    // Multilink
    //
    dwSubEntries,
    dwDialMode,
    dwDialExtraPercent,
    dwDialExtraSampleSeconds,
    dwHangUpExtraPercent,
    dwHangUpExtraSampleSeconds: Longint;
    //
    // Idle timeout
    //
    dwIdleDisconnectSeconds: Longint;

{$ENDIF}
 //+ МОЕ
 {$IFDEF  WINVER51}
    dwType           : Longint;
    dwEncryptionType : Longint;
    dwCustomAuthKey  : Longint;
    guidId           : string;
    szCustomDialDll  : Array [0..MAX_PATH - 1] of AnsiChar;
    dwVpnStrategy    : Longint;
    dwIPv6InterfaceMetric: boolean;
 {$ENDIF}

   dwfOptions2: LongInt;



Модератор: Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
09.07.2017, 16:21:08
    #39485335
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VPN подкючение
Yus, посмотрите свой e-mail
...
Рейтинг: 0 / 0
09.07.2017, 20:06:40
    #39485374
Yus
Yus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VPN подкючение
Не совсем то, что нужно
...
Рейтинг: 0 / 0
09.07.2017, 20:57:16
    #39485390
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VPN подкючение
Yus ,

ну почему же, как раз решаются ваши проблемы. Есть разные версии структур при работе с соединениями, в зависимости от версии ОС и в зависимости от ее разрядности. Посмотрите MSDN, там все подробно описано
...
Рейтинг: 0 / 0
09.07.2017, 21:47:29
    #39485403
Yus
Yus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание VPN подкючение
Спасибо, буду разбираться. По задаче осталась разобраться как проставить галку "Протокол интернета версии 6" и принудительно выбрать протокол PPTP. Для того и нужны были доп. параметры. структуры.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создание VPN подкючение / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]