7

アプリケーション用に特定のポートを開く必要があります。

INetFwAuthorizedApplicationすべてのポートでアプリケーションごとのルールを使用してみました。

fwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app)

または、を使用してすべてのアプリケーションに対して1つのポートを開きますINetFwOpenPort

firewallManager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port)

プログラムでアプリケーションごとに1つのポートのみをプログラムで開く方法はありますか?ファイアウォール設定を介して手動で行うことができます。

4

2 に答える 2

7

C# でファイアウォール ルールを作成するための手順を含む、接続のブロックに関する質問があります。これは、私が想像するあらゆる種類のファイアウォール ルールに適応させることができるはずです。

https://stackoverflow.com/a/1243026/12744

次のコードは、すべてのネットワーク アダプターで発信接続をブロックするファイアウォール ルールを作成します。

using NetFwTypeLib; // Located in FirewallAPI.dll
...
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Description = "Used to block all internet access.";
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.Name = "Block Internet";

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Add(firewallRule);
于 2011-12-14T13:12:30.767 に答える