を使用したWindows 10でのポートのファイアウォールの例外を設定すると、私は一緒にこのコードを置く:は、私は、多くの検索を行った後のWindows 10用のファイアウォールの例外を設定しようとしているC#
private const string PROGID_OPEN_PORT = "HNetCfg.FWOpenPort";
private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
private NetFwTypeLib.INetFwMgr GetFirewallManager()
{
Type objectType = Type.GetTypeFromCLSID(
new Guid(CLSID_FIREWALL_MANAGER));
return Activator.CreateInstance(objectType)
as NetFwTypeLib.INetFwMgr;
}
INetFwMgr manager = GetFirewallManager();
Type type = Type.GetTypeFromProgID(PROGID_OPEN_PORT);
INetFwOpenPort port = Activator.CreateInstance(type) as INetFwOpenPort;
port.Name = "MyPortRule";
port.Port = 9600;
port.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
port.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
port.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY;
manager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port);
これは、ファイアウォールルールプットを取得していますセキュリティが強化されたWindowsファイアウォールに追加されますが、ルールのプロファイルはパブリックに設定されます。 Profileをpublicに設定すると、ファイアウォールはポートを介してデータを送信しません。
Windows UIを使用してルールを変更すると、データを通過させるためにプロファイルを「プライベート」または「任意」に設定する必要があると判断されました。 NET.FW_SCOPE_.NET_FW_SCOPE_ALLに設定されたport.Scopeが、プロファイルをAnyに設定しないのはなぜですか?ファイアウォールルールのプロファイルを非公開に設定するにはどうすればよいですか?
また、port.ScopeをNET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNETに設定しようとしました。プロファイルはまだ 'public'に設定されています。
コピー:http://stackoverflow.com/questions/8488227/create-firewall-rule-to-open-port-per-application-programmatically-in-c-sharp#8505066 – maximdumont