|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как обойти firewall?
Написал две программки (клиентская и серверная) на основе Server(Client)Socket ради забавы над коллегами по офису (локалка на 14 компов). На порт "жертвы" посылается строка которая принимается клиентской прогой и выводит сообщение с этой строкой. Проблема в том что при первом запуске клиентской части возмущается Microsoft'овский firewall Блокировать/Разблокировать... Как этого избежать? Заранее спасибо..
|
#2
|
||||
|
||||
Можно вырубить службу файервола при старте программы
uses WinSvc; function StopFireWallService : Boolean; var SCMan : Cardinal; Svc : Cardinal; Stat : TServiceStatus; begin SCMan := OpenSCManager(nil, nil, SC_MANAGER_CONNECT); Svc := OpenService(SCMan, 'SharedAccess', SERVICE_STOP); Result := ControlService(Svc, SERVICE_CONTROL_STOP, Stat); CloseServiceHandle(Svc); CloseServiceHandle(SCMan); end; Также можно отключить автозагрузку файервола, если вместо ControlService использовать ChangeServiceConfig с 3-им параметром SERVICE_DISABLED. Не профи, но и не чайник . D6 - лучше не придумали. Пока. |
#3
|
||||
|
||||
Как я думаю файервол блокирует прогу ещё до или во время инициализации. Поэтому отключать его придётся другой прогой... Так?
А может можно в теле программы оставить только процедуру отключения и не использовать сетевых сервисов, тогда прога наверное не будет блокироваться, а работу с сетью заключить в дин. библиотеку... Или чтото вроде того. Посоветуйте как обойтись минимумом исполняемых файлов... |
#4
|
||||
|
||||
Просто перед тем как клиентская прога начнет ломиться в сеть (т.е. пред строкой ClientSocket.Active := True) надо вырубить файервол. И не надо никаких доп. файлов.
Не профи, но и не чайник . D6 - лучше не придумали. Пока. |