Как определить, блокирует ли Windows7 мой UDP-сервер? Как запросить разрешение? - PullRequest
2 голосов
/ 21 декабря 2011

Как моя программа может заставить брандмауэр Windows7 пропустить меня или вызвать ошибку?

Мой одноранговый код boost asio UDP работал.Сегодня это не будет работать.Я проверил брандмауэр, и a.exe в моем каталоге разработки все еще был авторизован для частного и публичного доступа.

При догадке я переименовал a.exe в a1.exe, запустил его, и Windows спросила меня,Я хотел позволить ему использовать сеть.Теперь это работает снова!

Я предполагаю, что windows7 запоминает контрольную сумму на a.exe, и когда я компилировал новые функции, он блокировал доступ к сети, но забыл удалить a.exe из списка авторизованных, поэтому он не дал мневсплывающий запрос.

Для разработки я могу просто использовать новое имя каждый раз, но это будет кошмаром поддержки, когда оно будет распространено на бета-тестеров.

Как проверить и / или проверитьзапросить авторизацию в моем коде?

1 Ответ

0 голосов
/ 26 июля 2012

Вопрос на самом деле совершенно не зависит от boost framework.

Что ж, похоже, существуют разные API, управляющие брандмауэром Windows, в зависимости от версии ОС (XP / Vista). Здесь у вас есть несколько полезных ресурсов с примерами кода:

http://msdn.microsoft.com/en-us/library/aa364726%28v=VS.85%29.aspx

http://www.vedivi.com/support/blog/72-configure-your-firewall-in-c.html

Также актуально:

Почему мое приложение не может получать пакеты UDP, когда включена служба ядра базовой фильтрации Windows?

...