c# - ¿Cómo mostrar el cuadro de diálogo “Windows Firewall ha bloqueado algunas funciones de este programa” para mi aplicación?
wcf windows-firewall (3)
Creo que tiene que agregar un archivo de manifiesto de Aplicación incrustada a su aplicación y establecer el administrador de requerimiento, de modo que pueda extraer un archivo bach que cambie las reglas del cortafuegos. Aquí hay un ejemplo de cómo se pueden abrir puertos utilizando un archivo bach.
Espero eso ayude
Estoy desarrollando la aplicación .NET 4.0 C # Windows Forms que aloja el servicio WCF en algún puerto predefinido (digamos 12345). Tenemos otra aplicación para iPad que habla con este servicio WCF, y esta conexión está bloqueada por el firewall de Windows. Mis usuarios siempre tienen problemas porque tienen que acordarse de agregar esta aplicación a la lista de excepciones, etc., lo que causa frustración.
¿Qué se necesita para que Windows muestre una ventana emergente como en la captura de pantalla de abajo para mi aplicación, para que sea más fácil de usar?
ACTUALIZACIÓN : entiendo que puedo actualizar las reglas programáticamente en Firewall de Windows. Sin embargo, eso requeriría privilegios de administrador que no siempre es factible. Por ejemplo, estoy pensando en las implementaciones de ClickOnce en el futuro, pero no estoy seguro de cómo funcionará con esto. Así que todavía me pregunto qué debo hacer para obtener ese diálogo.
SOLUCIÓN: gracias a la respuesta de @alexw a continuación, pude obtener el cuadro de diálogo con este simple código:
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);
TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();
y más: NO es posible obtener esta ventana emergente para el servicio de WCF como indica la documentación (ver en la parte inferior):
El direccionamiento HTTP auto hospedado para WCF no está integrado en el firewall de Windows. Se debe agregar una excepción a la configuración del firewall para permitir conexiones entrantes usando una URL particular.
No estoy seguro de qué condiciones deben cumplirse para exponer este cuadro de diálogo, supongo que una aplicación que intente abrir un puerto de escucha en una instancia de Windows de vainilla siempre debería mostrar este cuadro de diálogo. ¿Por qué no intenta agregar su aplicación a la lista de ''aplicaciones autorizadas'' o abrir el puerto manualmente usando la interoperabilidad COM de Firewall de Windows (NetFwTypeLib)?
Solo adivinando, ¿pero quizás necesitas habilitar los derechos de administrador de UAC para tu aplicación para que aparezca?
Echa un vistazo a estas publicaciones del blog sobre cómo hacerlo: http://victorhurdugaci.com/using-uac-with-c-part-2/