如何为我的应用程序显示"Windows防火墙已阻止此程序的某些功能"对话框?

avs*_*099 21 c# wcf windows-firewall

我正在开发.Net 4.0 C#Windows Forms应用程序,它在某个预定义的端口上托管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();
Run Code Online (Sandbox Code Playgroud)

以及更多 - 不可能将这个弹出窗口作为文档状态获得WCF服务(参见底部):

WCF的自托管HTTP寻址未集成到Windows防火墙中.必须在防火墙配置中添加例外,以允许使用特定URL的入站连接.

在此输入图像描述

Ale*_*ese 1

我不确定需要满足什么条件才能公开此对话框,我假设尝试在普通 Windows 实例上打开侦听端口的应用程序应始终显示此对话框。为什么不尝试将应用程序添加到“授权应用程序”列表,或使用 Windows 防火墙 COM 互操作 (NetFwTypeLib) 手动打开端口?

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