Программа создаст сетевое подключение по-протоколу PPTp.
(Это то что сейчас распротстраняется как средство для обхода ограничений, однако на самом деле всё намного прпоще и эффективнее! Адреса бесплатных серверов в сети навалом. Некоторые дублируют оригинальные, но есть и собственные. Также, некоторые поддерживают UDP-протокол т.е. забаненые игроки - могут продолжить читерить.)
Данные для подключения по умолчанию:
Имя пользователя: Guest
Паpoлb: Passwd
Компьютер к которому подключаться: 127.0.0.1
После создания откроет папку сетевых подключений.
ВНИМАНИЕ:
* Для сборки программы с помощью VC 6.0 нужен SDK Microsoft или версия Visual Srudio выше 6.0.
Я не могу сказать точно - как назывался пакет разработчика (для поддержки RAS в VC 6.0). Мой скачен давно, сам каталог выдран и переименован в нечто иное, что было - никаких опозновательных знаков, хотя можно было в файлах посмотреть - так смотрел, нет такого). Думаю, нужно задать такой поиск "microsoft sdk windows xp download" или вместо xp - 2000.
** Проект настроен на расположение SDK по-пути: F:\Devel\PSdk
- Вам, изменить на ваш.
Развернуть: CPPTp.cpp- Код: Выделить всё
// CPPTp.cpp
#pragma comment(lib,"rasapi32.lib")
#include <windows.h>
#include <ras.h>
#define _WIN32_WINNT_WIN7 0x0601
#if (_WIN32_WINNT_WIN7 >=0x601)
#define VS_Ikev2Only 7
#define RASEO2_RequireMachineCertificates 0x400000
#endif
#ifndef RASNP_Ipv6
#define RASNP_Ipv6 8
#endif
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {
DWORD dwRet, dwSize;
RasGetEntryProperties(NULL,NULL,NULL,&dwSize,NULL,NULL);
LPRASENTRY pras=(LPRASENTRY)malloc(dwSize);
memset(pras,0,dwSize);
pras->dwSize=dwSize;
pras->dwType=RASET_Vpn;
pras->dwRedialCount=1;
pras->dwRedialPause=5;
pras->dwfNetProtocols=RASNP_Ip;
pras->dwfNetProtocols |=RASNP_Ipv6;
BOOL bStrong=FALSE;
if(bStrong)
pras->dwEncryptionType=ET_Optional;
else
pras->dwEncryptionType=ET_RequireMax; /* Strong - HTTPS */
lstrcpy(pras->szLocalPhoneNumber,"127.0.0.1");
lstrcpy(pras->szDeviceType,RASDT_Vpn);
pras->dwfOptions=RASEO_PreviewUserPw |
RASEO_PreviewDomain |
RASEO_ShowDialingProgress |
RASEO_RemoteDefaultGateway;
pras->dwfOptions|=RASEO_RequireEncryptedPw;
pras->dwVpnStrategy=VS_Default;
char* svConnectName="PPTp - Connection";
dwRet=RasSetEntryProperties(NULL,svConnectName,pras,pras->dwSize,NULL,0);
if(dwRet) {
MessageBox(GetActiveWindow(),"Failed RasSetEntryProperties","Create CPPTp",MB_OK|MB_ICONWARNING|MB_SETFOREGROUND|MB_SYSTEMMODAL);
return dwRet;
}
RASCREDENTIALS ras_cre={0};
ras_cre.dwSize=sizeof(ras_cre);
ras_cre.dwMask=RASCM_UserName | RASCM_Password;
lstrcpy(ras_cre.szUserName,"Guest");
lstrcpy(ras_cre.szPassword,"Passwd");
dwRet=RasSetCredentials(NULL,svConnectName,&ras_cre,FALSE);
free(pras);
if(dwRet) {
MessageBox(GetActiveWindow(),"Failed RasSetCredentials","Create PPTp",MB_OK|MB_ICONWARNING|MB_SETFOREGROUND|MB_SYSTEMMODAL);
return dwRet;
}
char svDir[MAX_PATH];
GetSystemDirectory(svDir,MAX_PATH);
SHELLEXECUTEINFO ShExecInfo={0};
ShExecInfo.cbSize=sizeof(ShExecInfo);
ShExecInfo.fMask=NULL;
ShExecInfo.hwnd=NULL;
ShExecInfo.lpVerb=NULL;
ShExecInfo.lpFile="ncpa.cpl";
ShExecInfo.lpParameters=NULL;
ShExecInfo.lpDirectory=svDir;
ShExecInfo.nShow=SW_NORMAL;
ShExecInfo.hInstApp=NULL;
return ShellExecuteEx(&ShExecInfo);
}