繁体   English   中英

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

[英]how to display “Windows Firewall has blocked some features of this program” dialog for my app?

我正在开发 .Net 4.0 C# Windows 窗体应用程序,它在某个预定义的端口(比如 12345)上托管 WCF 服务。 我们有另一个与此 WCF 服务对话的 iPad 应用程序 - 此连接被 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 服务获取此弹出窗口(请参阅底部):

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

在此处输入图片说明

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

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

只是猜测,但也许您需要为您的应用程序启用 UAC 管理员权限才能弹出?

查看这些关于如何做到这一点的博客文章: http : //victorhurdugaci.com/using-uac-with-c-part-2/

我认为您必须向您的应用程序添加一个嵌入式应用程序清单文件并设置需要管理员,以便您可以在其中执行更改防火墙规则的 bach 文件。 这是一个如何使用 bach 文件打开端口的示例
希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM