none
Visual C++ подключение ras.h в visual studio 2010 RRS feed

  • Вопрос

  • Пишу программу для автоматического создания PPPOE соединения, Подключаю ras.h (#include <ras.h>) Но при использование любой функции RasDial происходит ошибка link error. Сильно не пинайте только начинаю активно изучать visual studio. Я так понимаю библиотеку нужно как то подключить к проекту, а только потом ее объявлять в программе, ткните носом где копать. Заранее огромное спасибо.
    23 ноября 2011 г. 5:59

Ответы

  • Кажись это тебе поможет

    #define WINVER 0x0501

    • Помечено в качестве ответа Mr.Sanders 11 января 2012 г. 18:35
    13 декабря 2011 г. 15:26
  • Пишу программу для автоматического создания PPPOE соединения, Подключаю ras.h (#include <ras.h>) Но при использование любой функции RasDial происходит ошибка link error. Сильно не пинайте только начинаю активно изучать visual studio. Я так понимаю библиотеку нужно как то подключить к проекту, а только потом ее объявлять в программе, ткните носом где копать. Заранее огромное спасибо.

    Все разобрался сам. 

    Проблема была в подключении библиотек. Нужно было прописать полный путь к Rasapi32.lib в свойствах проекта.

    Кому нужно пользуйтесь ( автоматическое создание подключения типа PPPoE )

    #include <windows.h>
    
    #include <Ras.h>
     
    void main()
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |        // отображать поле "Домен" в окне ввода пользователя и пароля (вкладка "Параметры" - установить флажок "Включать домен входа в Windows")
    	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_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	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 = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("Имя_Соединения"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("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.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    }
    


    • Помечено в качестве ответа Abolmasov Dmitry 14 декабря 2011 г. 16:55
    27 ноября 2011 г. 12:24

Все ответы

  • Пишу программу для автоматического создания PPPOE соединения, Подключаю ras.h (#include <ras.h>) Но при использование любой функции RasDial происходит ошибка link error. Сильно не пинайте только начинаю активно изучать visual studio. Я так понимаю библиотеку нужно как то подключить к проекту, а только потом ее объявлять в программе, ткните носом где копать. Заранее огромное спасибо.

    Все разобрался сам. 

    Проблема была в подключении библиотек. Нужно было прописать полный путь к Rasapi32.lib в свойствах проекта.

    Кому нужно пользуйтесь ( автоматическое создание подключения типа PPPoE )

    #include <windows.h>
    
    #include <Ras.h>
     
    void main()
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |        // отображать поле "Домен" в окне ввода пользователя и пароля (вкладка "Параметры" - установить флажок "Включать домен входа в Windows")
    	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_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	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 = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("Имя_Соединения"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("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.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    }
    


    • Помечено в качестве ответа Abolmasov Dmitry 14 декабря 2011 г. 16:55
    27 ноября 2011 г. 12:24
  • Появилась еще одна проблема, программа отлично работает на Win7 и Vista, но на XP подключение не создается. Может кто то посоветует что нибудь?
    29 ноября 2011 г. 5:49
  • Кажись это тебе поможет

    #define WINVER 0x0501

    • Помечено в качестве ответа Mr.Sanders 11 января 2012 г. 18:35
    13 декабря 2011 г. 15:26
  • Кажись это тебе поможет

    #define WINVER 0x0501

    Огромное спасибо все заработало,  примите искреннюю благодарность. 
    11 января 2012 г. 18:32