如何在 Windows 防火牆中新增/刪除規則

如何在 Windows 防火牆中新增/刪除規則

我需要實作一個在 Windows 防火牆中新增和刪除規則的工具。這些規則可以是入站或出站,禁止指定協定、IP 和連接埠上的通訊。我在做出設計決策時遇到了困難,無法確定要使用下列哪個選項:

  1. PowerShell,如中所述https://technet.microsoft.com/en-us/library/jj554906(v=wps.630).aspx。此選項的問題在於(如果我錯了,請糾正我)它似乎在 Windows 7 上不受支持,而我的工具必須在 Windows 7、Windows 8(.1) 以及更高版本的 Windows 上運行。另外,我不允許使用 C#,而 PowerShell 不與 C++ 集成,除非(可能,我不確定)透過呼叫 PowerShell 進程、為其提供命令列選項以及從其輸出/輸入讀取/寫入溪流。
  2. “netsh advfirewall 防火牆”方式。此選項的問題是 Windows 8.1 表示「netsh advfirewall」上下文已棄用,可能會從更高版本的 Windows 中刪除。所以我擔心採取這種方式會讓我的工具無法在Windows 9或10上運作。
  3. Windows 防火牆的 COM 接口,如這些範例中所示https://msdn.microsoft.com/en-us/library/windows/desktop/dd339604(v=vs.85).aspx。所需的 C++ 編碼不是問題,儘管它可能比使用 PowerShell 或命令列(netsh advfirewall 防火牆)花費更長的時間。

哪個選項是新增/刪除 Windows 防火牆規則的最佳設計決策?我列出的選項還有其他選項或優點/缺點嗎?

答案1

對於 Windows 7,執行方法有所不同

Server 2008/Vista/Server R2/Windows 7 中與防火牆相關的所有內容均透過 HNetCfg.FwPolicy2 COM 物件進行管理

這裡

如果您想使用 PowerShell 但需要針對兩個版本的作業系統,我想說編寫 2 個函數將是最簡單的,因為您似乎已經知道如何在 Windows 8 上執行此操作。

相關內容