Подтвердить что ты не робот

Как отобразить "Брандмауэр Windows заблокировал некоторые функции этой программы" для моего приложения?

Я разрабатываю приложение .NET 4.0 С# Windows Forms, в котором размещается служба WCF на каком-либо предопределенном порту (скажем, 12345). У нас есть еще одно приложение для iPad, которое говорит об этом сервисе WCF - и это соединение блокируется брандмауэром Windows. У моих пользователей всегда есть проблемы с ним, потому что они должны помнить, чтобы добавить это приложение в список исключений и т.д., Что вызывает разочарование.

Что требуется, чтобы заставить Windows отображать всплывающее окно, как на скриншоте ниже для моего приложения, чтобы сделать его более удобным?

UPDATE. Я понимаю, что я могу программно обновлять правила в брандмауэре Windows. Однако для этого потребуются привилегии администратора, которые не всегда возможны. Например, я думаю о развертываниях ClickOnce некоторое время в будущем - не знаю, как это сработает с этим. Поэтому мне все еще интересно, что мне делать, чтобы получить этот диалог.


РЕШЕНИЕ: спасибо @alexw ответ ниже, я смог получить диалог, используя этот простой код:

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);

TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();

и более - невозможно получить это всплывающее окно для службы WCF как состояния документации (см. внизу):

Самостоятельная HTTP-адресация для WCF не интегрирована в Windows брандмауэр. В конфигурацию брандмауэра необходимо добавить исключение, чтобы разрешить входящие соединения с использованием определенного URL-адреса.

enter image description here

4b9b3361

Ответ 1

Я не уверен, какие условия необходимо выполнить, чтобы разоблачить этот диалог, я предполагаю, что приложение, которое пытается открыть порт прослушивания в ванильном экземпляре Windows, должно всегда отображать это диалоговое окно. Почему бы вам не попробовать добавить приложение в список "авторизованных приложений" или открыть порт вручную с помощью межсетевого взаимодействия Windows Firewall (NetFwTypeLib)?

http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx

Ответ 2

Просто гадать, но, возможно, вам нужно включить права администратора UAC для вашего приложения, чтобы это всплыло?

Ознакомьтесь с этими сообщениями в блоге о том, как это сделать: http://victorhurdugaci.com/using-uac-with-c-part-2/

Ответ 3

Думаю, вам нужно добавить файл манифеста приложений в ваше приложение и установить требуемый администратор, чтобы вы могли выпустить файл bach в это изменение правил брандмауэра. здесь приведен пример как открыть порты с использованием файла bach
Надеюсь, что это поможет.