Можно ли добавиться (программно себя) в исключения Firewall'a? Пишу аналог Bittorrent. Постоянно Firewall беспокоится, что-то чует, не знает что. Речь идет о сторонних Firewall. Да и Windows Firewall тоже мне таблички разноцветные показывает какие-то.
P.S. Ну, или как можно сделать так, чтобы они доверяли моему процессу? Можно как-то с ними договориться?
Насчет именно программно, вызовом функции WinAPI, не скажу, а через вызов Net shell можно. Функцией system
или ShellExecute
выполняете команду
netsh.exe advfirewall firewall add rule name="имя правила" dir=in action=allow program="путь к программе" enable=yes
Команда должна выполняться от администратора, с поднятием привилегий. В нормальной ситуации ее запускает инсталлятор. В скрипте InnoSetup, например, она выглядит так:
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""имя правила"" dir=in action=allow program=""{app}\программа.exe"" enable=yes"; Flags: runhidden skipifdoesntexist; Description: "Adding firewall rule for моя программа"; StatusMsg: "Adding firewall rules..."
Это, разумеется, для Windows Firewall. Про брандмауэры других производителей надо спрашивать у этих самых производителей.
Краткий ответ - так просто - нельзя. Если бы можно было, то все вирусы и трояны давно бы добавили себя в исключения и грош цена была всем фаерволам.
По хорошему - нужно получать сертификат, подписывать свое приложение и потом договариваться с другими фаерволами/антивирусами, что бы они Ваше приложение пропускали.
Но обычно, такие программы разрабатывают с выключенных фаерволом (ужас-ужас) или настраивают ручками, что бы папка с исходниками была в исключениях.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как известно, set - множество в С++, которое отсортировано по возрастаниюМне известно, что можно сделать так, чтобы set был отсортирован по убыванию