2012-05-25 12 views
20

Estoy desarrollando .Net 4.0 C# aplicación 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 recordar agregar esta aplicación a la lista de excepciones, etc., lo que causa frustración.cómo mostrar el cuadro de diálogo "Windows Firewall ha bloqueado algunas funciones de este programa" para mi aplicación?

¿Qué se necesita para que Windows muestre una ventana emergente como la de la siguiente captura de pantalla para mi aplicación, para que sea más fácil de usar?

ACTUALIZACIÓN - Entiendo que puedo actualizar programáticamente las reglas en Windows Firewall. 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; no estoy seguro de cómo funcionará con esto. Así que todavía me pregunto qué debería hacer para obtener ese diálogo.


SOLUCIÓN: gracias a @alexw respuesta a continuación, yo era capaz de conseguir el cuadro de diálogo que utiliza este código simple:

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 este emergente para WCF servicio como documentation states (ver en la parte inferior):

HTTP alojado en sí mismo direccionamiento para WCF no está integrado en Windows firewall. Se debe agregar una excepción a la configuración del cortafuegos al para permitir las conexiones entrantes usando una URL particular.

enter image description here

Respuesta

1

no estoy seguro de lo que se deben cumplir las condiciones para exponer este cuadro de diálogo, asumiría una aplicación que intenta abrir un puerto de escucha en una instancia de vainilla Windows siempre debe 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 Windows Firewall (NetFwTypeLib)?

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

+0

gracias. Actualicé mi pregunta: sé sobre la posibilidad de abrir el puerto de forma manual, pero aún así preferiría dejar que el usuario haga una elección explícita. – avs099

+0

El usuario aún requiere privilegios administrativos para 'Permitir acceso' utilizando el prompt de Firewall de Windows. ¿Has intentado escribir un programa simple que abre un puerto de escucha de TCP/IP y ver si eso crea un mensaje? ¿Quizás necesites hacer eso brevemente antes de que comience el servicio WCF? –

+0

gracias, eso funcionó exactamente como dijiste. El uso de TcpListener para comenzar a escuchar el puerto muestra la solicitud del Firewall de Windows. – avs099

Cuestiones relacionadas