簡體   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