访问规则为私网和公网共享添加应用防火墙规则。我曾经使用这个-“netshfirewalladdallowedprogramprogram="Path.."name=AppNameENABLEscope=ALLprofile=CURRENT"但现在我想使用COM对象自动化一些进程。在实现类中找到这个闪亮的代码-http://web.archive.org/web/20070707110141/http://www.dot.net.nz/Default.aspx?tabid=42&mid=404&ctl=Details&ItemID=8之后,我一直在尝试使用FirewallHelper.Instance.GrantAuthorization(@"Path...","AppName",NET_FW_SCOPE_.NET_FW_SCOPE_ALL,NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY);我面临的问题是GrantAuthorization方法只会为公共或专用网络添加规则,而我的旧netsh命令会为每个网络添加2条规则。这些命令实际上看起来非常相似,所以对我来说有点乏味。那么...如何添加两个网络规则?肖恩我的回答来自大卫的回答,但更详细。并修复有关设置Localports的问题。您需要在设置Localports之前设置协议。更多细节如下:首先,您需要导入引用FirewallAPI.dll。它在“C:\Windows\System32\FirewallAPI.dll”中,然后:使用NetFwTypeLib;并将代码插入您的:TypetNetFwPolicy2=Type.GetTypeFromProgID("HNetCfg.FwPolicy2");INetFwPolicy2fwPolicy2=(INetFwPolicy2)Activator.CreateInstance(tNetFwPolicy2);varcurrentProfiles=fwPolicy2.CurrentProfileTypes;//让我们创建一个新规则INetFwRule2inboundRule=(INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));inboundRule.Enabled=true;//允许通过inboundRule.Action=NET_FW_ACTION_.NET_FW_ACTION_ALLOW;//使用协议TCPinboundRule.Protocol=6;//TCP//端口81inboundRule.LocalPorts="81";//规则名称inboundRule.Name="MyRule";//。..//inboundRule.Profiles=currentProfiles;//现在添加规则INetFwPolicy2firewallPolicy=(INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));firewallPolicy.Rules.Add(inboundRule);我认为您最好的选择是使用高级安全API与Windows防火墙进行通信。快速搜索“C#INetFwRule2”将向您展示大量有关如何注册或更新防火墙规则的示例。为了添加公共和私人政策,我使用了一些东西TypetNetFwPolicy2=Type.GetTypeFromProgID("HNetCfg.FwPolicy2");INetFwPolicy2fwPolicy2=(INetFwPolicy2)Activator.CreateInstance(tNetFwPolicy2);varcurrentProfiles=fwPolicy2.CurrentProfileTypes;//让我们创建一个新规则INetFwRule2inboundRule=(INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));inboundRule.Enabled=true;inboundRule.LocalPorts="1234";inboundRule.Protocol=6;//TCP//...inboundRule.Profiles=currentProfiles;//现在添加规则INetFwPolicy2firewallPolicy=(INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));firewallPolicy.Rules.Add(inboundRule);我要出站规则:以上是C#学习教程:通过win7FirewallAPI为私网和公网共享添加应用防火墙规则。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——inboundRule.Direction=NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
