我是参考网上的RAS_Connect编写的程序。单独测试通过(我用MFC框架编写的),但是我设置了定时拨VPN,TRACEROUTE,断开VPN的代码,结果前两次是成功的,后面的traceroute结果就明显是在未拨VPN的情况下的结果。然后出现了一堆新建连接。关闭这个程序再打开后就又恢复了正常。不知道有哪位高人知道么
UINT CtracewhereDlg::RAS_Connect()
{
   SetDlgItemText(IDC_CONNECT_STATE, "正在连接拨号网络,请稍候..."); char strEntryName[40];
    char szUserName[40], szPassword[40];
char *pbuf;
CFile file("CMCC.txt",CFile::modeRead); //IP.txt与c++文件同一个文件夹
DWORD dwFileLen;
dwFileLen = file.GetLength();
pbuf=new char[dwFileLen];
pbuf = new char[dwFileLen+1];
pbuf[dwFileLen] = 0;
file.Read(pbuf,dwFileLen);
file.Close();    char *p; 
    
     p = strtok( pbuf, "," ); // C4996
 sprintf(strEntryName,"%s\0", p); 
     // Get next token: 
     p = strtok( NULL, "," ); // C4996
 sprintf(szUserName,"%s\0", p); 
     // Get next token: 
     p = strtok( NULL, "," ); // C4996
 sprintf(szPassword,"%s\0", p);      HRASCONN hRasConn = NULL;    RASDIALPARAMS rdParams; //拨号连接的信息
    ZeroMemory(&rdParams, sizeof(RASDIALPARAMS));
    rdParams.dwSize = sizeof(RASDIALPARAMS);
    lstrcpy(rdParams.szEntryName, strEntryName);
    lstrcpy(rdParams.szUserName, szUserName);
    lstrcpy(rdParams.szPassword, szPassword);    DWORD dwRet;
    dwRet = ::RasDial(NULL, NULL, &rdParams, 0L, NULL, &hRasConn);
    if (dwRet)         //如果函数成功,则返回0
    {
        char szBuf[256] = "";
        ::RasGetErrorString((UINT)dwRet, (LPSTR)szBuf, 256);
       SetDlgItemText(IDC_CONNECT_STATE, CString("连接错误! ") + CString(szBuf)            );
        WinExec("rasphone -a", SW_SHOW);
        return 0;
    }    /*----------------------------------------------------------------------*/
    RASPPPIP raspppip; //获取拨号连接的IP地址
    raspppip.dwSize = sizeof(RASPPPIP);
    DWORD cb = sizeof(RASPPPIP);
    ::RasGetProjectionInfo(hRasConn, RASP_PppIp, &raspppip, &cb);
CString m_strIP;
    m_strIP = (CString)raspppip.szIpAddress;    /*----------------------------------------------------------------------*/    SetDlgItemText(IDC_CONNECT_STATE, "已经成功地建立了连接");  //  if (::IsWindowVisible(GetSafeHwnd()))
    //    this->CheckNet();    return 1;
}