Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать Высокоскоростное подключение? нужно сделать в RAS WinAPI 
V
    Опции темы
crazynetwork
Дата 4.11.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 16.10.2009

Репутация: нет
Всего: нет



Опять же РасДиал нигде не описана. Структуру мы заполняли когда создавали подклчение. ТОесть оно уже есть с нужным логином, паролем и т.д. Теперь как то его надо запустить. Вопрос как?
PM MAIL   Вверх
Maks1509
Дата 5.11.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 22.8.2007
Где: г. Тольятти

Репутация: 2
Всего: 5



http://google.com/codesearch?hl=ru&lr=...%B8%D1%81%D0%BA
Вообще гугл код - удобная штука. smile Там же этих дозвонщиков непомерное количество.
PM MAIL ICQ   Вверх
crazynetwork
Дата 8.11.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 16.10.2009

Репутация: нет
Всего: нет



Мужики, нихрена не получаеся чего только уже не делал. Выручайте. Делфи 2010, винда7. Соединение создается со всеми нужными параметрами. Вызвать дозвон програмно, ну никак не получается. ПОМОГАЙТЕ.
PM MAIL   Вверх
darkmamba
Дата 14.11.2009, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.10.2008

Репутация: 1
Всего: 1



Может это поможет ?

Код

DWORD RasDial(
  LPRASDIALEXTENSIONS lpRasDialExtensions,
  LPCTSTR lpszPhonebook,
  LPRASDIALPARAMS lpRasDialParams,
  DWORD dwNotifierType,
  LPVOID lpvNotifier,
  LPHRASCONN lphRasConn
);

PM MAIL   Вверх
crazynetwork
Дата 7.6.2010, 20:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 16.10.2009

Репутация: нет
Всего: нет



Цитата(Maks1509 @ 30.10.2009,  20:33)
Делал давно, код проверял на Windows 2000, XP, Vista, 7, работоспособен. Информацию долго искал по различным форумам. Пришлось создавать свои заголовочные модули, но результат вцелом оправдал себя. smile 
Код

function CreateRasVpnConnection(szEntryName, szPhoneName, szUserName, szPassword: WideString): LRESULT;
var
  rEntry  : RASENTRYW;
  rDial   : RASDIALPARAMSW;
  lpCred  : RASCREDENTIALSW;
  dwSize  : Integer;
  EntrySize  : Integer;
  InfoSize  : Integer;
  dwFlags : DWORD;
  dwFlags2: DWORD;
  dwRes   : DWORD;
begin
  // следующий оператор выполняется если версия ОС = 5.0 или <= 4.0, что соответствует
  // Windows 2000 или Windows NT. В этих ОС в структуре RASENTRY отсутствовали поля
  // начиная с dwfOptions2 (включительно). программа собранная в Windows XP имеет
  // структуру RASENTRY большего размера чем используется в Win 2000 и Win NT, поэтому
  // при попытке вызвать функцию RasSetEntryProperties с указанием размера структуры
  // через sizeof(RASENTRY) происходит ошибка. значение 2088 соответствует
  // размеру RASENTRY без полей начиная с dwfOptions2. таким образом даже используя
  // структуру большего чем нужно для Win 2000 и Win NT размера можно сделать
  // корректный вызов функции RasSetEntryProperties.

  // для ANSI функций размер структуры в этом случае такой
  {if IsWindowsXP then
    dwSize := SizeOf(RASENTRYW)
  else
    dwSize := 2088;}

  // более универсальный способ - система сама возвратит нужный размер структуры
  // и не требуется проверять версию ОС.

  dwSize := SizeOf(RASENTRYW);
  RasGetEntryPropertiesW(nil, nil, nil, EntrySize, nil, InfoSize);
  if (EntrySize < dwSize) then
    dwSize := EntrySize;

  // Задаём флаговые параметры VPN соединения

  dwFlags := // Вкладка 'Параметры', флаг 'Запрашивать имя, пароль, сертификат и т.д.', вкл
             RASEO_PreviewUserPw or
             // Вкладка 'Общие', флаг 'При подключении вывести значок в области уведомлений', вкл
             RASEO_ModemLights or
             // Вкладка 'Общие', флаг 'Отображать ход подключения', вкл
             RASEO_ShowDialingProgress or
             // Использовать основной шлюз
             RASEO_RemoteDefaultGateway or
             // Зашифрованный пароль будет использоваться при проверке подлинности с сервером
             RASEO_RequireEncryptedPw or
             // Использовать автоматически логин, пароль и домен из Windows
             RASEO_RequireDataEncryption or
             // Пароль будет зашифрован по схеме Microsoft
             RASEO_RequireMsEncryptedPw;

  dwFlags2 := // Вкладка 'Параметры', флаг 'Согласовывать многоканальное подключение для одноканальных', выкл
              RASEO2_DontNegotiateMultilink or
              // Вкладка 'Параметры', флаг 'Перезвонить при разрыве связи', вкл
              RASEO2_ReconnectIfDropped;

  // Заполняем структуру RASENTRY

  ZeroMemory(@rEntry, SizeOf(RASENTRYW));

  rEntry.dwSize                  := dwSize;
  rEntry.dwfOptions              := dwFlags;
  // Тип используемого протокола = TCP/IP
  rEntry.dwfNetProtocols         := RASNP_Ip;
  // Тип используемого протокола сервера удаленного доступа = Point-to-Point Protocol (PPP)
  rEntry.dwFramingProtocol       := RASFP_Ppp;
  // Тип создаваемого подключения - Виртуальная частная сеть (VPN)
  rEntry.dwType                  := RASET_Vpn;
  // Значение выпадающего списка 'Тип VPN' = 'Автоматически'
  // Вызывается сначала только PPTP, если же попытка заканчивается неудачей, то вызывается L2TP
  rEntry.dwVpnStrategy           := VS_Default;
  rEntry.dwfOptions2             := dwFlags2;
  // Вкладка 'Безопасность', флаг 'Требуется шифрование данных', вкл
  // Диалог 'Дополнительные параметры безопасности', список 'Шифрование данных' = 'обязательное'
  // Тип шифрования данных при подключении = Шифрование не используется
  rEntry.dwEncryptionType        := ET_None;
  // Используем соединение устройств с множеством «подвходов»
  rEntry.dwDialMode              := RASEDM_DialAll;
  // Вкладка 'Параметры', 'Число повторений набора номера' = 3
  rEntry.dwRedialCount           := 3;
  // Вкладка 'Параметры', 'Интервал между повторениями' = 60 секунд
  rEntry.dwRedialPause           := 60;
  lstrcpyW(rEntry.szLocalPhoneNumber, @szPhoneName[1]);
  lstrcpyW(rEntry.szDeviceType, RASDT_Vpn);

  // Создаем новое подключение с нужными параметрами

  dwRes := RasSetEntryPropertiesW(nil, @szEntryName[1], @rEntry, dwSize, nil, 0);
  case dwRes of
    ERROR_SUCCESS:
      begin

        // выполняем проверку версии ОС. начиная с ОС Win XP и старше, логин и
        // пароль (фактически это нам и требуется) можно изменить функцией
        // RasSetCredentials, а в предыдущих ОС можно с помощью функции
        // RasSetEntryDialParams. в Win XP еще можно изменить пароль функцией
        // RasSetEntryDialParams, а вот уже в Win Vista и старше не получится.

        if IsWindowsXP then
          begin

            // Заполняем структуру RASCREDENTIALS

            ZeroMemory(@lpCred, SizeOf(RASCREDENTIALSW));

            lpCred.dwMask := RASCM_UserName or RASCM_Password;
            lpCred.dwSize := SizeOf(RASCREDENTIALSW);
            lstrcpyW(lpCred.szUserName, @szUserName[1]);
            lstrcpyW(lpCred.szPassword, @szPassword[1]);

            // Изменяем логин и пароль созданного подключения

            dwRes := RasSetCredentialsW(nil, @szEntryName[1], lpCred, FALSE);

          end
        else
          begin

            // Заполняем структуру RASDIALPARAMS

            ZeroMemory(@rDial, SizeOf(RASDIALPARAMSW));
            rDial.dwSize := SizeOf(RASDIALPARAMSW);
            lstrcpyW(rDial.szEntryName, @szEntryName[1]);
            lstrcpyW(rDial.szUserName, @szUserName[1]);
            lstrcpyW(rDial.szPassword, @szPassword[1]);

            // Изменяем логин и пароль созданного подключения

            dwRes := RasSetEntryDialParamsW(nil, @rDial, FALSE);

          end;

      end;
  end;

  Result := dwRes;
end;


Код

unit F_Ras;

interface

uses
  Windows;

const
  raslib = 'rasapi32.dll';

// RASIPADDR structure

type
  PRASIPADDR = ^RASIPADDR;
  RASIPADDR = record
    a: Byte;
    b: Byte;
    c: Byte;
    d: Byte;
  end;

const
  RAS_MaxAreaCode       = 10;
  RAS_MaxPhoneNumber    = 128;
  RAS_MaxDeviceType     = 16;
  RAS_MaxDeviceName     = 128;
  RAS_MaxPadType        = 32;
  RAS_MaxX25Address     = 200;
  RAS_MaxFacilities     = 200;
  RAS_MaxUserData       = 200;
  RAS_MaxDnsSuffix      = 255;
  RAS_MaxEntryName      = 256;
  RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;
  UNLEN                 = 256; // Maximum user name length
  PWLEN                 = 256; // Maximum password length
  CNLEN                 = 15; // Computer name length
  DNLEN                 = CNLEN; // Maximum domain name length

// RASCREDENTIALS structure

type
  RASCREDENTIALSA = record
    dwSize    : DWORD;
    dwMask    : DWORD;
    szUserName: Array [0..UNLEN] of AnsiChar;
    szPassword: Array [0..PWLEN] of AnsiChar;
    szDomain  : Array [0..DNLEN] of AnsiChar;
  end;

  RASCREDENTIALSW = record
    dwSize    : DWORD;
    dwMask    : DWORD;
    szUserName: Array [0..UNLEN] of WideChar;
    szPassword: Array [0..PWLEN] of WideChar;
    szDomain  : Array [0..DNLEN] of WideChar;
  end;

  LPRASCREDENTIALSW = ^RASCREDENTIALSW;
  LPRASCREDENTIALSA = ^RASCREDENTIALSA;
  LPRASCREDENTIALS = ^RASCREDENTIALS;
  RASCREDENTIALS = RASCREDENTIALSA;

const
  // RASCREDENTIALS dwMask values

  RASCM_UserName = $00000001;
  RASCM_Password = $00000002;

// RASDIALPARAMS structure

type
  tagRASDIALPARAMSA = record
    dwSize          : DWORD;
    szEntryName     : Array [0..RAS_MaxEntryName] of AnsiChar;
    szPhoneNumber   : Array [0..RAS_MaxPhoneNumber] of AnsiChar;
    szCallbackNumber: Array [0..RAS_MaxCallbackNumber] of AnsiChar;
    szUserName      : Array [0..UNLEN] of AnsiChar;
    szPassword      : Array [0..PWLEN] of AnsiChar;
    szDomain        : Array [0..DNLEN] of AnsiChar;
    // {$IFDEF WINVER_0x401_OR_GREATER}
    dwSubEntry      : DWORD;
    dwCallbackId    : DWORD;
  end;

  tagRASDIALPARAMSW = record
    dwSize          : DWORD;
    szEntryName     : Array [0..RAS_MaxEntryName] of WideChar;
    szPhoneNumber   : Array [0..RAS_MaxPhoneNumber] of WideChar;
    szCallbackNumber: Array [0..RAS_MaxCallbackNumber] of WideChar;
    szUserName      : Array [0..UNLEN] of WideChar;
    szPassword      : Array [0..PWLEN] of WideChar;
    szDomain        : Array [0..DNLEN] of WideChar;
    // {$IFDEF WINVER_0x401_OR_GREATER}
    dwSubEntry      : DWORD;
    dwCallbackId    : DWORD;
  end;

  PRASDIALPARAMSA = ^RASDIALPARAMSA;
  PRASDIALPARAMSW = ^RASDIALPARAMSW;
  PRASDIALPARAMS = PRASDIALPARAMSA;
  tagRASDIALPARAMS = tagRASDIALPARAMSA;
  RASDIALPARAMSA = tagRASDIALPARAMSA;
  RASDIALPARAMSW = tagRASDIALPARAMSW;
  RASDIALPARAMS = RASDIALPARAMSA;

// RASENTRY structure

type
  tagRASENTRYA = record
    dwSize                    : DWORD;
    dwfOptions                : DWORD;
    // Настройки телефонного номера
    dwCountryID               : DWORD;
    dwCountryCode             : DWORD;
    szAreaCode                : Array [0..RAS_MaxAreaCode] of AnsiChar;
    szLocalPhoneNumber        : Array [0..RAS_MaxPhoneNumber] of AnsiChar;
    dwAlternateOffset         : DWORD;
    // PPP(Протокол Point-to-point)/Ip
    ipaddr                    : RASIPADDR;
    ipaddrDns                 : RASIPADDR;
    ipaddrDnsAlt              : RASIPADDR;
    ipaddrWins                : RASIPADDR;
    ipaddrWinsAlt             : RASIPADDR;
    // Протокол
    dwFrameSize               : DWORD;
    dwfNetProtocols           : DWORD;
    dwFramingProtocol         : DWORD;
    // Сценарии
    szScript                  : Array [0..MAX_PATH-1] of AnsiChar;
    // Автодозвон
    szAutodialDll             : Array [0..MAX_PATH-1] of AnsiChar;
    szAutodialFunc            : Array [0..MAX_PATH-1] of AnsiChar;
    // Устройство
    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                : DWORD;
    // Зарезервировано
    dwReserved1               : DWORD;
    dwReserved2               : DWORD;
    //  {$IFDEF WINVER_0x401_OR_GREATER}
    // Подключение из многих соединений
    dwSubEntries              : DWORD;
    dwDialMode                : DWORD;
    dwDialExtraPercent        : DWORD;
    dwDialExtraSampleSeconds  : DWORD;
    dwHangUpExtraPercent      : DWORD;
    dwHangUpExtraSampleSeconds: DWORD;
    // Время простоя до разъединения
    dwIdleDisconnectSeconds   : DWORD;
    // {$IFDEF WINVER_0x500_OR_GREATER}
    dwType                    : DWORD;
    dwEncryptionType          : DWORD;
    dwCustomAuthKey           : DWORD;
    guidId                    : TGUID;
    szCustomDialDll           : Array [0..MAX_PATH-1] of AnsiChar;
    dwVpnStrategy             : DWORD;
    //  {$IFDEF WINVER_0x501_OR_GREATER}
    dwfOptions2               : DWORD;
    dwfOptions3               : DWORD;
    szDnsSuffix               : Array [0..RAS_MaxDnsSuffix] of AnsiChar;
    dwTcpWindowSize           : DWORD;
    szPrerequisitePbk         : Array [0..MAX_PATH-1] of AnsiChar;
    szPrerequisiteEntry       : Array [0..RAS_MaxEntryName] of AnsiChar;
    dwRedialCount             : DWORD;
    dwRedialPause             : DWORD;
    //  {$IFDEF WINVER_0x600_OR_GREATER}
    //    ipv6addrDns   : RASIPV6ADDR;
    //    ipv6addrDnsAlt: RASIPV6ADDR;
    //  {$ENDIF}
    //    dwIPv4InterfaceMetric: DWORD;
    //    dwIPv6InterfaceMetric: DWORD;
  end;

  tagRASENTRYW = record
    dwSize                    : DWORD;
    dwfOptions                : DWORD;
    // Настройки телефонного номера
    dwCountryID               : DWORD;
    dwCountryCode             : DWORD;
    szAreaCode                : Array [0..RAS_MaxAreaCode] of WideChar;
    szLocalPhoneNumber        : Array [0..RAS_MaxPhoneNumber] of WideChar;
    dwAlternateOffset         : DWORD;
    // PPP(Протокол Point-to-point)/Ip
    ipaddr                    : RASIPADDR;
    ipaddrDns                 : RASIPADDR;
    ipaddrDnsAlt              : RASIPADDR;
    ipaddrWins                : RASIPADDR;
    ipaddrWinsAlt             : RASIPADDR;
    // Протокол
    dwFrameSize               : DWORD;
    dwfNetProtocols           : DWORD;
    dwFramingProtocol         : DWORD;
    // Сценарии
    szScript                  : Array [0..MAX_PATH-1] of WideChar;
    // Автодозвон
    szAutodialDll             : Array [0..MAX_PATH-1] of WideChar;
    szAutodialFunc            : Array [0..MAX_PATH-1] of WideChar;
    // Устройство
    szDeviceType              : Array [0..RAS_MaxDeviceType] of WideChar;
    szDeviceName              : Array [0..RAS_MaxDeviceName]of WideChar;
    // X.25
    szX25PadType              : Array [0..RAS_MaxPadType] of WideChar;
    szX25Address              : Array [0..RAS_MaxX25Address] of WideChar;
    szX25Facilities           : Array [0..RAS_MaxFacilities] of WideChar;
    szX25UserData             : Array [0..RAS_MaxUserData] of WideChar;
    dwChannels                : DWORD;
    // Зарезервировано
    dwReserved1               : DWORD;
    dwReserved2               : DWORD;
    //  {$IFDEF WINVER_0x401_OR_GREATER}
    // Подключение из многих соединений
    dwSubEntries              : DWORD;
    dwDialMode                : DWORD;
    dwDialExtraPercent        : DWORD;
    dwDialExtraSampleSeconds  : DWORD;
    dwHangUpExtraPercent      : DWORD;
    dwHangUpExtraSampleSeconds: DWORD;
    // Время простоя до разъединения
    dwIdleDisconnectSeconds   : DWORD;
    // {$IFDEF WINVER_0x500_OR_GREATER}
    dwType                    : DWORD;
    dwEncryptionType          : DWORD;
    dwCustomAuthKey           : DWORD;
    guidId                    : TGUID;
    szCustomDialDll           : Array [0..MAX_PATH-1] of WideChar;
    dwVpnStrategy             : DWORD;
    //  {$IFDEF WINVER_0x501_OR_GREATER}
    dwfOptions2               : DWORD;
    dwfOptions3               : DWORD;
    szDnsSuffix               : Array [0..RAS_MaxDnsSuffix] of WideChar;
    dwTcpWindowSize           : DWORD;
    szPrerequisitePbk         : Array [0..MAX_PATH-1] of WideChar;
    szPrerequisiteEntry       : Array [0..RAS_MaxEntryName] of WideChar;
    dwRedialCount             : DWORD;
    dwRedialPause             : DWORD;
    //  {$IFDEF WINVER_0x600_OR_GREATER}
    //    ipv6addrDns   : RASIPV6ADDR;
    //    ipv6addrDnsAlt: RASIPV6ADDR;
    //  {$ENDIF}
    //    dwIPv4InterfaceMetric: DWORD;
    //    dwIPv6InterfaceMetric: DWORD;
  end;

  tagRASENTRY = tagRASENTRYA;
  RASENTRYA = tagRASENTRYA;
  RASENTRYW = tagRASENTRYW;
  RASENTRY = RASENTRYA;

const
// RASENTRY dwfOptions bit flags

  RASEO_UseCountryAndAreaCodes    = $00000001;
  RASEO_SpecificIpAddr            = $00000002;
  RASEO_SpecificNameServers       = $00000004;
  RASEO_IpHeaderCompression       = $00000008;
  RASEO_RemoteDefaultGateway      = $00000010;
  RASEO_DisableLcpExtensions      = $00000020;
  RASEO_TerminalBeforeDial        = $00000040;
  RASEO_TerminalAfterDial         = $00000080;
  RASEO_ModemLights               = $00000100;
  RASEO_SwCompression             = $00000200;
  RASEO_RequireEncryptedPw        = $00000400;
  RASEO_RequireMsEncryptedPw      = $00000800;
  RASEO_RequireDataEncryption     = $00001000;
  RASEO_NetworkLogon              = $00002000;
  RASEO_UseLogonCredentials       = $00004000;
  RASEO_PromoteAlternates         = $00008000;
  RASEO_SecureLocalFiles          = $00010000;
  RASEO_RequireEAP                = $00020000;
  RASEO_RequirePAP                = $00040000;
  RASEO_RequireSPAP               = $00080000;
  RASEO_Custom                    = $00100000;
  RASEO_PreviewPhoneNumber        = $00200000;
  RASEO_SharedPhoneNumbers        = $00800000;
  RASEO_PreviewUserPw             = $01000000;
  RASEO_PreviewDomain             = $02000000;
  RASEO_ShowDialingProgress       = $04000000;
  RASEO_RequireCHAP               = $08000000;
  RASEO_RequireMsCHAP             = $10000000;
  RASEO_RequireMsCHAP2            = $20000000;
  RASEO_RequireW95MSCHAP          = $40000000;
  RASEO_CustomScript              = $80000000;

// RASENTRY dwfOptions bit flags

  RASEO2_DontNegotiateMultilink   = $00000004;
  RASEO2_ReconnectIfDropped       = $00000100;

// RASENTRY dwProtocols bit flags

  RASNP_Ip = $00000004;

// RASENTRY dwFramingProtocols bit flags

  RASFP_Ppp = $00000001;

// RASENTRY dwIdleDisconnectSeconds constants

  RASIDS_Disabled = $FFFFFFFF;

// RASENTRY szDeviceType default strings

  RASDT_Vpn = 'vpn';

// RASENTRY dwDialMode values

  RASEDM_DialAll = 1;

// The entry type used to determine which UI properties
// are to be presented to user.  This generally corresponds
// to a Connections "add" wizard selection.

  RASET_Vpn = 2; // Virtual private network

// There is currently no difference between RASCTRYINFOA and RASCTRYINFOW.
// This may change in the future.

  ET_None    = 0; // No encryption
  VS_Default = 0; // default (PPTP for now)

function RasSetEntryPropertiesA(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer; dwEntrySize: Longint; lpbDeviceInfo: Pointer; dwDeviceInfoSize: Longint): Longint; stdcall;
function RasSetEntryPropertiesW(lpszPhonebook, szEntry: PWideChar; lpbEntry: Pointer; dwEntrySize: Longint; lpbDeviceInfo: Pointer; dwDeviceInfoSize: Longint): Longint; stdcall;
function RasSetEntryProperties(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer; dwEntrySize: Longint; lpbDeviceInfo: Pointer; dwDeviceInfoSize: Longint): Longint; stdcall;

function RasGetEntryPropertiesA(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer; var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer; var lpdwDeviceInfoSize: Longint): Longint; stdcall;
function RasGetEntryPropertiesW(lpszPhonebook, szEntry: PWideChar; lpbEntry: Pointer; var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer; var lpdwDeviceInfoSize: Longint): Longint; stdcall;
function RasGetEntryProperties(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer; var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer; var lpdwDeviceInfoSize: Longint): Longint; stdcall;

function RasSetEntryDialParamsA(lpszPhonebook: PAnsiChar; lprasdialparams: PRASDIALPARAMSA; fRemovePassword: BOOL): DWORD; stdcall;
function RasSetEntryDialParamsW(lpszPhonebook: PWideChar; lprasdialparams: PRASDIALPARAMSW; fRemovePassword: BOOL): DWORD; stdcall;
function RasSetEntryDialParams(lpszPhonebook: PAnsiChar; lprasdialparams: PRASDIALPARAMS; fRemovePassword: BOOL): DWORD; stdcall;

function RasGetEntryDialParamsA(lpszPhoneBook: PAnsiChar; var lpDialParams: RASDIALPARAMSA; var lpfPassword: LongBool): Longint; stdcall;
function RasGetEntryDialParamsW(lpszPhoneBook: PWideChar; var lpDialParams: RASDIALPARAMSW; var lpfPassword: LongBool): Longint; stdcall;
function RasGetEntryDialParams(lpszPhoneBook: PAnsiChar; var lpDialParams: RASDIALPARAMS; var lpfPassword: LongBool): Longint; stdcall;

function RasSetCredentialsA(lpszPhoneBook, lpszEntry: PAnsiChar; var lpCredentials: RASCREDENTIALSA; fRemovePassword: LongBool): Longint; stdcall;
function RasSetCredentialsW(lpszPhoneBook, lpszEntry: PWideChar; var lpCredentials: RASCREDENTIALSW; fRemovePassword: LongBool): Longint; stdcall;
function RasSetCredentials(lpszPhoneBook, lpszEntry: PAnsiChar; var lpCredentials: RASCREDENTIALS; fRemovePassword: LongBool): Longint; stdcall;

implementation

function RasSetEntryPropertiesA; external raslib name 'RasSetEntryPropertiesA';
function RasSetEntryPropertiesW; external raslib name 'RasSetEntryPropertiesW';
function RasSetEntryProperties;  external raslib name 'RasSetEntryPropertiesA';

function RasGetEntryPropertiesA; external raslib name 'RasGetEntryPropertiesA';
function RasGetEntryPropertiesW; external raslib name 'RasGetEntryPropertiesW';
function RasGetEntryProperties;  external raslib name 'RasGetEntryPropertiesA';

function RasSetEntryDialParamsA; external raslib name 'RasSetEntryDialParamsA';
function RasSetEntryDialParamsW; external raslib name 'RasSetEntryDialParamsW';
function RasSetEntryDialParams;  external raslib name 'RasSetEntryDialParamsA';

function RasGetEntryDialParamsA; external raslib name 'RasGetEntryDialParamsA';
function RasGetEntryDialParamsW; external raslib name 'RasGetEntryDialParamsW';
function RasGetEntryDialParams;  external raslib name 'RasGetEntryDialParamsA';

function RasSetCredentialsA;     external raslib name 'RasSetCredentialsA';
function RasSetCredentialsW;     external raslib name 'RasSetCredentialsW';
function RasSetCredentials;      external raslib name 'RasSetCredentialsA';

end.

Подключение создается и работает. Кто знает как по умолчанию создать подключение что бы было отключено шифрование 7
PM MAIL   Вверх
crazynetwork
Дата 10.6.2010, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 16.10.2009

Репутация: нет
Всего: нет



Всем спасибо, разобрался!
PM MAIL   Вверх
scorpio8882
Дата 1.10.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.10.2010

Репутация: нет
Всего: нет



Цитата

crazynetwork
    Всем спасибо, разобрался!


с народом поделись, а то уже час голову ломаю
PM MAIL   Вверх
scorpio8882
Дата 1.10.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.10.2010

Репутация: нет
Всего: нет



Подскажите пожалуйста, как можно подогнать эти исходники к созданию vpn такого типа:
Код

[internet]
Encoding=1
Type=2
AutoLogon=0
UseRasCredentials=1
DialParamsUID=32463000
Guid=217549EFC5D3414496FFCB68EB905841
BaseProtocol=1
VpnStrategy=2
ExcludedProtocols=0
LcpExtensions=1
DataEncryption=8
SwCompression=0
NegotiateMultilinkAlways=1
SkipNwcWarning=0
SkipDownLevelDialog=0
SkipDoubleDialDialog=0
DialMode=1
DialPercent=75
DialSeconds=120
HangUpPercent=10
HangUpSeconds=120
OverridePref=15
RedialAttempts=999999999
RedialSeconds=30
IdleDisconnectSeconds=0
RedialOnLinkFailure=1
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
AuthenticateServer=0
ShareMsFilePrint=0
BindMsNetClient=0
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=VPN4-0
PreferredDevice=Минипорт WAN (L2TP)
PreferredBps=0
PreferredHwFlow=1
PreferredProtocol=1
PreferredCompression=1
PreferredSpeaker=1
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=0
PreviewPhoneNumber=0
ShowDialingProgress=1
ShowMonitorIconInTaskBar=1
CustomAuthKey=-1
AuthRestrictions=608
TypicalAuth=2
IpPrioritizeRemote=1
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpFrameSize=1006
IpDnsFlags=0
IpNBTFlags=1
TcpWindowSize=0
UseFlags=0
IpSecFlags=0
IpDnsSuffix=

NETCOMPONENTS=
ms_server=0
ms_msclient=0
ms_psched=1

MEDIA=rastapi
Port=VPN4-0
Device=Минипорт WAN (L2TP)

DEVICE=vpn
PhoneNumber=10.10.0.20
AreaCode=
CountryCode=1
CountryID=1
UseDialingRules=0
Comment=
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1


Добавлено через 2 минуты и 16 секунд
т.е. в свойствах vpn-соединения снять галочку "Требуется шифрование", во вкладке "Сеть" убрать галочки со всех компонентов кроме интернет протокола.
PM MAIL   Вверх
JnK
Дата 19.1.2011, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.3.2007

Репутация: нет
Всего: нет



Цитата(scorpio8882 @ 1.10.2010,  22:12)
Цитата

crazynetwork
    Всем спасибо, разобрался!


с народом поделись, а то уже час голову ломаю

Убирает галочку Требовать шифрования.
Код

rEntry.dwEncryptionType := 196608;


Кто может подсказать где можно поправить в коде, что бы под Vista при создании:
 1. Безопасность - ставилось Обычные (рекомендуемые параметры)
 2. Галочка сохранять имя пользователя и пароль , только для меня.?
PM MAIL   Вверх
greenfox82
Дата 5.2.2011, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



Доброго времени суток. Подскажите, пожалуйста, а как сделать созданное подключение PPPoE - подключением по умолчанию. В msdn ничего не нарыл. Буду очень признателен за помощь.
PM MAIL   Вверх
Maks1509
Дата 10.2.2011, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 22.8.2007
Где: г. Тольятти

Репутация: 2
Всего: 5



greenfox82

Моя версия такая:

Код

function CreateDefault(pszEntryName: WideString): LRESULT;
const
  pszSubKey: LPWSTR = 'SOFTWARE\Microsoft\RAS AutoDial\Default';
  pszValue : LPWSTR = 'DefaultInternet';
  dwDesired: Array [Boolean] of DWORD = (0, KEY_WOW64_64KEY);
var
  dwRet  : DWORD;
  regKey : HKEY;
  cbData : DWORD;
  Dispos : DWORD;
  function IsOnWow64: Boolean;
  var
    IsWow64Process: function(hProcess: THandle; var Wow64Process : BOOL): BOOL; stdcall;
    Wow64Process: BOOL;
  begin
   Result := False;
   IsWow64Process := GetProcAddress(GetModuleHandle(Kernel32), 'IsWow64Process');
   if Assigned(IsWow64Process) then
     if IsWow64Process(GetCurrentProcess, Wow64Process) then
       Result := Wow64Process;
  end;
begin
  Result := 0;
  dwRet := RegCreateKeyExW(HKEY_LOCAL_MACHINE, pszSubKey, 0, nil,
    REG_OPTION_NON_VOLATILE, KEY_WRITE or dwDesired[IsOnWow64], nil, regKey, @Dispos);
  if (dwRet <> ERROR_SUCCESS) then
    dwRet := RegOpenKeyExW(HKEY_LOCAL_MACHINE, pszSubKey, 0, KEY_WRITE or
      dwDesired[IsOnWow64], regKey);
  if (dwRet = ERROR_SUCCESS) then
  begin
    cbData := (lstrlenW(LPWSTR(pszEntryName)) + 1) * SizeOf(WideChar);
    Result := RegSetValueExW(regKey, pszValue, 0, REG_SZ, LPWSTR(pszEntryName),
      cbData);
    RegCloseKey(regKey);
  end;
end;

PM MAIL ICQ   Вверх
greenfox82
Дата 10.2.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



Maks1509

Огромнейшее-преогромнейшее спасибо!!! smile 
PM MAIL   Вверх
JnK
Дата 20.4.2011, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.3.2007

Репутация: нет
Всего: нет



Кто может подсказать, как заставить программно Windows Vista/Seven запоминать имя пользователя и пароль?! в созданном VPN подключении.

Это сообщение отредактировал(а) JnK - 20.4.2011, 12:37
PM MAIL   Вверх
crazynetwork
Дата 20.5.2011, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 16.10.2009

Репутация: нет
Всего: нет



Рабочий код. Сам потратил много времени...

Код

procedure TForm1.doDialClick(Sender: TObject);
var
    I, Location: integer ;
      name,ip,login,pass: string;
     Extensions: TRasDialExtensions;
     XParams: TRasDialParams;
begin
    login:=Edit1.Text;
    pass:=Edit2.Text;
    CreateRasVpnConnection('vpn','ip',login,pass);

    //sleep(10);

    DialName := 'vpn';
    LabelConn.Caption := DialName ;

    TimerStatus.Enabled := false ;
    doDial.Enabled := false ;


    MagRasCon.EntryName := DialName ;
    MagRasCon.PBLocation := Location ;   // 5.21 keep location
    MagRasCon.PhoneNumber :=    '' ;  // use the one in the phonebook
    ConnLog.Lines.Add ('Starting to Dial Connection: ' + DialName) ;
    ConnLog.Lines.Add ('Phonebook Location: ' +
                             MasRasPBLocationStr [MagRasCon.PBLocation]) ;  // 5.21 show location


    DialHandle := 0 ;
    if MagRasCon.AutoConnectEx (DialHandle) <> 0 then
    begin
        // fails here is dialling did not even start
        ConnLog.Lines.Add  ('Dialling Failed - ' + MagRasCon.StatusStr) ;
        beep ;
        TimerStatus.Enabled := true ;
        doDial.Enabled := true ;
        exit ;
    end ;

    doHangup.Enabled := true ;
end;


PM MAIL   Вверх
teres
Дата 12.1.2013, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.10.2011

Репутация: нет
Всего: нет



Цитата(crazynetwork @ 20.5.2011,  22:57)
Рабочий код. Сам потратил много времени...

Код

procedure TForm1.doDialClick(Sender: TObject);
var
    I, Location: integer ;
      name,ip,login,pass: string;
     Extensions: TRasDialExtensions;
     XParams: TRasDialParams;
begin
    login:=Edit1.Text;
    pass:=Edit2.Text;
    CreateRasVpnConnection('vpn','ip',login,pass);

    //sleep(10);

    DialName := 'vpn';
    LabelConn.Caption := DialName ;

    TimerStatus.Enabled := false ;
    doDial.Enabled := false ;


    MagRasCon.EntryName := DialName ;
    MagRasCon.PBLocation := Location ;   // 5.21 keep location
    MagRasCon.PhoneNumber :=    '' ;  // use the one in the phonebook
    ConnLog.Lines.Add ('Starting to Dial Connection: ' + DialName) ;
    ConnLog.Lines.Add ('Phonebook Location: ' +
                             MasRasPBLocationStr [MagRasCon.PBLocation]) ;  // 5.21 show location


    DialHandle := 0 ;
    if MagRasCon.AutoConnectEx (DialHandle) <> 0 then
    begin
        // fails here is dialling did not even start
        ConnLog.Lines.Add  ('Dialling Failed - ' + MagRasCon.StatusStr) ;
        beep ;
        TimerStatus.Enabled := true ;
        doDial.Enabled := true ;
        exit ;
    end ;

    doHangup.Enabled := true ;
end;


Помогите не могу разобраться в коде, где записать процедуру?? И как создать подключение чтобы ввод был через Логин Едит1, Пароль Едит2. создать подключение Button 1.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1421 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.