我想設置爲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防火牆中,但該規則的配置文件已設置爲公開。將配置文件設置爲公開時,防火牆不會通過端口讓數據通過。
使用Windows用戶界面修改規則,我確定配置文件必須設置爲'私人'或'任何'才能讓數據通過。爲什麼不將port.Scope設置爲NET_FW_SCOPE_.NET_FW_SCOPE_ALL將配置文件設置爲Any?如何將防火牆規則中的配置文件設置爲私人或任何?
我也嘗試將port.Scope設置爲NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET。個人資料仍然設置爲「公開」。
Copy of:http://stackoverflow.com/questions/8488227/create-firewall-rule-to-open-port-per-application-programmatically-in-c-sharp#8505066 – maximdumont