怎么使用RasSetEntryProperties设置IPSec预共享密钥? - C++ Builder / Windows SDK/API
怎么使用RasSetEntryProperties可以设置IPSec预共享密钥?
RASENTRY re;哪个属性是设置密钥的?
谢谢
[解决办法]
我牺牲了今天的午休时间给你写了一段测试代码。你这20分真少呀,
- C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){char *szEntryName = "VPN拨号";HRASCONN hRasConn;RASDIALPARAMS rdParams;DWORD dwRet;char szBuf[512];rdParams.dwSize=sizeof(RASDIALPARAMS);strcpy(rdParams.szEntryName,szEntryName);rdParams.szPhoneNumber[0] = '\0';rdParams.szCallbackNumber[0] = '\0';strcpy(rdParams.szUserName,"aaa");strcpy(rdParams.szPassword, "123");rdParams.szDomain[0] = '\0';hRasConn=NULL;// RASENTRY entry; ::ZeroMemory(&entry, sizeof(entry)); entry.dwSize=sizeof(entry);// DWORD size=sizeof(entry);//dwRet=RasGetEntryProperties(NULL,NULL,&entry,&size,NULL,NULL); //1024262928 //940376592// ShowMessage(entry.dwfNetProtocols);// //entry.dwfOptions = entry.dwfOptions | RASEO_UseCountryAndAreaCodes; //entry.dwfOptions = entry.dwfOptions | RASEO_SpecificIpAddr; //entry.dwfOptions = entry.dwfOptions | RASEO_SpecificNameServers; //entry.dwfOptions = entry.dwfOptions | RASEO_IpHeaderCompression; entry.dwfOptions = entry.dwfOptions | RASEO_RemoteDefaultGateway; //entry.dwfOptions = entry.dwfOptions | RASEO_DisableLcpExtensions; //禁用LCP扩展 // entry.dwfOptions = entry.dwfOptions | RASEO_TerminalBeforeDial; // entry.dwfOptions = entry.dwfOptions | RASEO_TerminalAfterDial; entry.dwfOptions = entry.dwfOptions | RASEO_ModemLights;//连接后在通知区域显示图标 entry.dwfOptions = entry.dwfOptions | RASEO_SwCompression; //启用软件压缩 //entry.dwfOptions = entry.dwfOptions | RASEO_RequireEncryptedPw; //entry.dwfOptions = entry.dwfOptions | RASEO_RequireMsEncryptedPw; //entry.dwfOptions = entry.dwfOptions | RASEO_RequireDataEncryption; //entry.dwfOptions = entry.dwfOptions | RASEO_NetworkLogon; //entry.dwfOptions = entry.dwfOptions | RASEO_UseLogonCredentials;//登陆域 entry.dwfOptions = entry.dwfOptions | RASEO_PromoteAlternates; entry.dwfOptions = entry.dwfOptions | RASEO_ShowDialingProgress; //显示连接进度 entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_DontNegotiateMultilink; //不为单路连接协商多路链接 entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_DisableNbtOverIP;//禁用tcp/ip上的NetBEUI entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_Internet; entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_SecureClientForMSNet;//ms网络客户端 entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_SecureFileAndPrint;//文件和打印 entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_ReconnectIfDropped;//断线重拨 entry.dwfOptions2 = entry.dwfOptions2 | RASEO2_UsePreSharedKey; //entry.dwfNetProtocols = entry.dwfNetProtocols|RASNP_Ip; //entry.dwfNetProtocols = entry.dwfNetProtocols | RASNP_NetBEUI; //entry.dwfNetProtocols = entry.dwfNetProtocols | RASNP_Ipx; entry.dwVpnStrategy = VS_L2tpOnly; entry.dwFramingProtocol = RASFP_Ras;//RASFP_Ppp; StrPCopy(entry.szScript, ""); StrPCopy(entry.szLocalPhoneNumber, ""); StrPCopy(entry.szDeviceName, "WAN 微型端口 (L2TP)"); StrPCopy(entry.szDeviceType, "VPN"); entry.dwType = RASET_Vpn;//RASET_Broadband;dwRet = RasSetEntryProperties(NULL,szEntryName,&entry,sizeof(RASENTRY),NULL,NULL);if(!dwRet){ ShowMessage("创建连接成功!");}RASCREDENTIALS RAScredentials; ::ZeroMemory(&RAScredentials, sizeof(RAScredentials)); RAScredentials.dwSize = sizeof(RAScredentials); RAScredentials.dwMask = RASCM_PreSharedKey; StrPCopy(RAScredentials.szPassword,"aaaa"); dwRet = RasSetCredentials(NULL,szEntryName,&RAScredentials,false);if(!dwRet){ ShowMessage("设置IPSec成功!");}}//-------------------------------------------