В общем нужно сменить шлюз на текущем соединении. Через SetIpForwardEntry можно сменить эти настройки. Но проблема в том что я не знаю какое именно соединение менять... Через GetIpForwardTable я получаю списки таблиц... Но там их очень много, и какую именно я использую для выхода в инет не знаю(... Как я понимаю нужно изменить(через GetIpForwardTable) одну из полученных таблиц, вопрос какую нужно менять ?...
Проблема была решена таким способом: Код (Text): int SetGetway(const wchar_t *getway ){ char buf[128] = {0}; if(! WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,getway,-1,buf,sizeof(buf),(const char*)0,0) ) return 0; DWORD size = 0; GetIpForwardTable(NULL,&size,true); PMIB_IPFORWARDTABLE pTable = (PMIB_IPFORWARDTABLE)HeapAlloc(GetProcessHeap(),0,size); if ( GetIpForwardTable(pTable,&size,true) != NO_ERROR) return 0; for (DWORD i = 0; i<pTable->dwNumEntries; i++){ struct in_addr addr; addr.S_un.S_addr = pTable->table[i].dwForwardDest; if (pTable->table[i].dwForwardDest == 0/*! strcmp(ip,inet_ntoa(addr))*/ ){ DeleteIpForwardEntry(&pTable->table[i]); addr.S_un.S_addr = inet_addr(buf); pTable->table[i].dwForwardNextHop = addr.S_un.S_addr; if( SetIpForwardEntry(&pTable->table[i]) == NO_ERROR) return 1; }; }; return 0; }; Надо только учесть что в некоторых случаях(при отсутствии основного шлюза), нужно самому добавить через CreateIpForwardEntry.