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

问题描述 投票:21回答:4

我正在开发.Net 4.0 C#Windows Forms应用程序,该应用程序在某些预定义的端口上(例如12345)托管WCF服务。我们还有另一个与该WCF服务对话的iPad应用-Windows防火墙阻止了此连接。我的用户经常遇到麻烦,因为他们必须记住将此应用添加到例外列表等中,这会令人沮丧。

要使Windows在我的应用程序的下面的屏幕截图中显示弹出窗口,使其变得更加用户友好,需要什么?

UPDATE-我了解我可以以编程方式更新Windows防火墙中的规则。但是,这将需要管理员特权,但这并不总是可行的。例如,我正在考虑在将来的某个时间部署ClickOnce-不确定它将如何工作。所以我仍然想知道应该怎么做才能得到该对话框。


SOLUTION:感谢下面的@alexw回答,我能够使用以下简单代码获取对话框:

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 12345);

TcpListener t = new TcpListener(ipLocalEndPoint);
t.Start();
t.Stop();

以及更多-无法以documentation states的形式获得WCF服务的此弹出窗口(见底部):

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS82VHUwWi5wbmcifQ==” alt =“在此处输入图像描述”>“ >>

我正在开发.Net 4.0 C#Windows Forms应用程序,该应用程序在某些预定义的端口上(例如12345)托管WCF服务。我们还有另一个iPad应用程序正在与此WCF服务对话-此连接为...

c# wcf windows-firewall
4个回答
1
投票

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


1
投票

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


0
投票

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


0
投票

是否可以针对出站流量执行此操作?要使Windows显示这样的弹出窗口以便将出站流量列入白名单

© www.soinside.com 2019 - 2024. All rights reserved.