Answer the question
In order to leave comments, you need to log in
PPPoE setup. Part of the code is not working?
There was a need to write a small utility that can set up a PPPoE connection. I "googled" some sources from which I highlighted the following code:
This is a prototype ;-)
#include <windows.h>
#include <Ras.h>
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#pragma comment(lib, "rasapi32.lib")
#pragma comment(lib, "Mpr.lib")
#include <windowsx.h>
#include <Winerror.h>
#include <Ras.h>
#include <shellapi.h>
#include <commdlg.h>
#include <rasdlg.h>
#include <raserror.h>
#include <commctrl.h>
#include <string>
#include <sstream>
#include <stdio.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <stdint.h>
using namespace std;
#define CONN_NAME "Provider_NAME"
#define LOGIN "login0000"
#define PASSWORD "pass00000000"
void main()
{
// Настраиваем PPPoE соединение
RASENTRY RS;
memset(&RS, 0, sizeof(RASENTRY));
RS.dwSize = sizeof(RS);
RS.dwfOptions =
RASEO_PreviewUserPw | // Запрашивать имя пользователя и пароль
RASEO_ModemLights | // Вывести значёк в область уведомлений
// RASEO_PreviewDomain | // отображать поле "Домен" в окне ввода пользователя и пароля (вкладка "Параметры" - установить флажок "Включать домен входа в Windows")
// RASEO_PreviewPhoneNumber | // отображать выпадающий список "Набрать" в окне ввода пользователя и пароля
RASEO_ShowDialingProgress | // вкладка "Параметры" - Параметры набора номера: установить флажок "Отображать ход подключения"
RASEO_RemoteDefaultGateway | // вкладка "Сеть" - "Протокол Интернета (TCP/IP)" - кнопка "Дополнительно" - установить флажок "Использовать основной шлюз в удаленной сети"
RASEO_SwCompression | // вкладка "Сеть" - кнопка "Параметры" - установить флажок "Использовать программное сжатие данных"
// RASEO_RequirePAP | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Незашифрованный пароль (PAP)"
// RASEO_RequireSPAP | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Протокол проверки пароля Shiva (SPAP)"
RASEO_RequireCHAP | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Протокол проверки пароля CHAP"
// RASEO_RequireMsCHAP | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Протокол проверки пароля Microsoft (MS-CHAP)"
// RASEO_RequireW95MSCHAP | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Разрешить старый протокол MS-CHAP для Windows 95"
//RASEO_RequireMsCHAP2 | // вкладка "Безопасность" - "Дополнительные (выборочные параметры)" - установить флажок "Протокол проверки пароля Microsoft (MS-CHAP v2)"
RASEO_SecureLocalFiles; // вкладка "Сеть" - Компоненты, используемые этим подключением: снять флажок "Использовать основной шлюз в удаленной сети";
RS.dwfOptions2 = RASEO2_Internet | RASEO2_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
RS.dwIdleDisconnectSeconds = RASIDS_Disabled; // Не отключаться если нет активности
RS.dwfNetProtocols = RASNP_Ip; // протоколы Интернета
RS.dwFramingProtocol = RASFP_Ppp; // протокол Point-to-Point Protocol
RS.dwType = RASET_Broadband; // тип подключения
RS.dwVpnStrategy = VS_Default; // вкладка "Сеть" - По умолчанию
RS.dwEncryptionType = ET_Optional; // параметры шифрования (ET_None, ET_Require, ET_RequireMax, ET_Optional)
RS.dwDialMode = RASEDM_DialAll;
RS.dwRedialCount = 99; // число повторов набора номера
RS.dwRedialPause = 60; // интервал между повторениями
lstrcpy(RS.szLocalPhoneNumber, TEXT("service"));
lstrcpy(RS.szDeviceType, RASDT_PPPoE); // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
DWORD dwRet = RasSetEntryProperties(NULL,TEXT(CONN_NAME), &RS, sizeof(RS), NULL, 0);
switch (dwRet)
{
case ERROR_ACCESS_DENIED:
printf("The user does not have the correct privileges. Only an administrator can complete this task.\n");
break;
case ERROR_BUFFER_OVERFLOW:
printf("The address or buffer specified by lpRasEntry is invalid.\n");
break;
case ERROR_CANNOT_OPEN_PROFILE:
printf("The phone book is corrupted or missing components.\n");
break;
case ERROR_INVALID_PARAMETER:
printf("The RASENTRY structure pointed to by the lpRasEntry parameter does not contain adequate information. See the description for lpRasEntry to see what information is required.\n");
break;
case ERROR_SUCCESS:
printf("Create succeeds.\n");
break;
}
// Прописываем логин и пароль
RASDIALPARAMS RS_param;
memset(&RS_param, 0, sizeof(RASDIALPARAMS));
RS_param.dwSize = sizeof(RS_param);
lstrcpy(RS_param.szEntryName, TEXT(CONN_NAME));
lstrcpy(RS_param.szPhoneNumber, NULL);
lstrcpy(RS_param.szCallbackNumber, TEXT(""));
lstrcpy(RS_param.szUserName, TEXT(LOGIN));
lstrcpy(RS_param.szPassword, TEXT(PASSWORD));
lstrcpy(RS_param.szDomain, TEXT(""));
RS_param.dwSubEntry = 0;
RS_param.dwCallbackId = 0;
DWORD dwParam = RasSetEntryDialParams(NULL, &RS_param, FALSE);
switch (dwParam)
{
case ERROR_BUFFER_INVALID:
printf("The address or buffer specified by lprasdialparams is invalid.\n");
break;
case ERROR_CANNOT_OPEN_PHONEBOOK:
printf("The phone book is corrupted or missing components.\n");
break;
case ERROR_CANNOT_FIND_PHONEBOOK_ENTRY:
printf("The phone-book entry does not exist.\n");
break;
case ERROR_SUCCESS:
printf("Login add succeeds.\n");
break;
}
Sleep(3000);
}
Answer the question
In order to leave comments, you need to log in
SUDDENLY!
Installed all the updates for Visual Studio 2012 and the code started working as it should.
Ndaa ...
Microsoft products are such products.
Such a simple code, consisting entirely of ...
Oh, well, them. I'll go and finish this utility as soon as possible and install GNU/Linux back.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question