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 は (おそらく、確信はありませんが) PowerShell プロセスを呼び出してコマンド ライン オプションを指定し、その出力/入力ストリームの読み取り/書き込みを行う以外は、C++ と統合されません。
  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 を使用したいが、両方のバージョンの OS をターゲットにする必要がある場合は、Windows 8 での実行方法をすでにご存知のようですので、2 つの関数を記述するのが最も簡単だと思います。

関連情報