【问题标题】:how to display "Windows Firewall has blocked some features of this program" dialog for my app?如何为我的应用显示“Windows 防火墙已阻止此程序的某些功能”对话框?
【发布时间】:2012-06-01 06:22:23
【问题描述】:

我正在开发 .Net 4.0 C# Windows Forms 应用程序,该应用程序在某个预定义端口(例如 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 服务的此弹出窗口设为 documentation states(见底部):

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

【问题讨论】:

    标签: c# wcf windows-firewall


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我更新了我的问题 - 我确实知道手动打开端口的可能性,但我仍然希望让用户明确做出选择。
    • 用户仍然需要管理权限才能使用 Windows 防火墙提示“允许访问”。您是否尝试过编写一个简单的程序来打开侦听 TCP/IP 端口并查看是否会创建提示?也许您需要在 WCF 服务启动之前简单地执行此操作?
    • 谢谢 - 正如你所说的那样。使用 TcpListener 开始监听端口会显示 Windows 防火墙提示。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我认为您必须在您的应用程序中添加一个Embeded Application manifest file 并设置要求管理员,以便您可以在其中执行一个更改防火墙规则的 bach 文件。这是一个例子how can open ports using a bach file
      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2012-11-23
        • 1970-01-01
        • 2011-10-20
        • 2010-10-16
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多