質問
IPsecの変更を実行する方法を知っている唯一の方法は、netshを呼び出して変更を行うことです。 System.ManagementおよびWMIオブジェクトを直接使用する方法はありますか?もしそうなら、それは何ですか? MSDNで関連するWMI情報を見つけるのに苦労しています。
または、誰かが使用した他の便利な方法はありますか?
編集:私はC#で作業していますが、.NET System.Managementベースの回答に関してはC#の例を好むでしょう。
ありがとう!
解決
1)完全一致:WMI。
EnableIPFilterSec WMIクラスの静的メソッドは、すべてのIPバインドネットワークアダプターでIPセキュリティをグローバルに有効にできます。セキュリティを有効にすると、EnableIPSec  WMIクラスメソッドを使用して、特定のアダプターのセキュリティ特性を変更できます。前者のMSDNはこちら:
http://msdn.microsoft.com /en-us/library/aa390381%28VS.85%29.aspx
EnableIPSecとそのパラメーター(ポートとプロトコルのリストを宣言できるようにする)に関する情報については、このMSDNエントリーを参照してください:
http://msdn.microsoft.com /en-us/library/aa390382%28VS.85%29.aspx
最後に、これはWMI.NETコードディレクトリへのリンクであり、System.Managementを使用してWQLクエリを実行するコードの有用なサンプルがあります。
http://msdn.microsoft.com/en-us/library /ms257338.aspx
注:
ObjectQuery / SelectQuery System.ManagementオブジェクトのWQLテストを広範囲にわたっていじる必要がある場合は、wbemtestを試してください。これはWindows Management Instrumentationテスターであり、アプリケーションのWQLの作成、テスト、およびホーニングをより優れたものにします。
2)関連:Vista以降でFirewallAPI、INetFwRuleインターフェイス、およびその他必要なものを使用するプログラムによるファイアウォールの変更。
Vista以降では、ipsec機能が必要な場合でもFirewallPolicy.dllを使用するのは簡単ですが、レガシーPolicyAgentの実装は気にしません。
Vista以降のAdvanced Firewallは、WFP(Windows Filtering Platform)内でIPSecとファイアウォールを完全に組み合わせ、レガシーIPSec実装がPolicyAgentを通過し続けることを知らなかったため、最初はこれがオプションであることに気付きませんでした。
これは、FirewallAPI.dllを使用すると、ファイアウォールのステートフルインテリジェンスを備えたIPSecのすべての機能を提供できることを意味します。ブラックリストルールを追加するだけで(ブラックリストルールが優先されるため)、必要に応じてAPIを介してブラックリストに追加すると、WFPはトラフィックのドロップを開始します。完了!
他のヒント
IIS 7では、メタデータベースをいじらずに、IP制限を構成ファイルから直接操作できます。メンテナンスを簡単にするために、configSourceで設定ファイルを分割して、IPSecureセクションを独自のファイルに保存できます。
記事全体:
http://boseca.blogspot.com/2010/12/programmatically -addremove-ip-security.html
WMIではできません。 WMIはTCPフィルタリング、つまりポートのブロックに制限されています。これ以上ない。
以前のWindowsバージョンを使用している場合、次のいずれかを実行できます。
a)コマンドラインツールを使用します。この場合、ipseccmd.exeまたはipsecpol.exe(W2K)、またはnetshのいずれか
または
b)レジストリにポリシーを書き込む
私の推測では、コマンドラインツールはそれを行うだけです。レジストリに値を書き込みます。
私はしばらく前からそれに取り組んできましたが、マネージコードソリューションは見つかりませんでした。 WFP APIが以前のWindowsバージョンで使用できないことは残念です。