c# – 我的应用程序如何显示“Windows防火墙已经阻止了这个程序的一些功能”对话框?

我正在开发.Net 4.0 C#Windows窗体应用程序,在一些预定义的端口上承载WCF服务(我们说12345)。我们有另一个iPad应用程序与这个WCF服务进行交谈 – 这个连接被Windows防火墙阻止。我的用户总是有麻烦,因为他们必须记住将这个应用程序添加到例外列表等 – 这会导致沮丧。

需要使Windows显示弹出窗口,如下面的我的应用程序截图,以使其更加用户友好?

更新 – 我明白我可以在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服务为documentation states(见底部):

Self-hosted HTTP addressing for WCF is not integrated into the Windows
firewall. An exception must be added to the firewall configuration to
allow inbound connections using a particular URL.

我不知道什么条件需要满足暴露这个对话框,我会假设一个应用程序试图打开一个香草Windows实例上的侦听端口应该总是显示此对话框。为什么不尝试将应用程序添加到“授权应用程序”列表中,或者使用Windows防火墙COM互操作(NetFwTypeLib)手动打开端口?

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

http://stackoverflow.com/questions/10758301/how-to-display-windows-firewall-has-blocked-some-features-of-this-program-dial

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 我的应用程序如何显示“Windows防火墙已经阻止了这个程序的一些功能”对话框?