使用NetFwTypeLib阻止或取消阻止使用防火墙设置的端口在Windows XP上不起作用

时间:2013-03-07 11:23:47

标签: c# windows-7 tcp windows-xp windows-firewall-api

我试图使用以下代码阻止或取消阻止使用80 TCP端口:

 const string guidFWPolicy2 = "{E2B3C97F-6AE1-41AC-817A-F6F92166D7DD}";
const string guidRWRule = "{2C5BC43E-3369-4C33-AB0C-BE9469677AF4}";
Type typeFWPolicy2 = Type.GetTypeFromCLSID(new Guid(guidFWPolicy2));
Type typeFWRule = Type.GetTypeFromCLSID(new Guid(guidRWRule));
INetFwPolicy2 fwPolicy2 =(INetFwPolicy2)Activator.CreateInstance(typeFWPolicy2);
 INetFwRule newRule = (INetFwRule)Activator.CreateInstance(typeFWRule);
newRule.Name = "MabuAsTcpLocker_OutBound_Rule";
newRule.Description = "Block outbound traffic  over TCP port 80";
newRule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;
newRule.RemotePorts = "80";                 
newRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
newRule.Enabled = true;
newRule.Profiles = fwPolicy2.CurrentProfileTypes;
newRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
fwPolicy2.Rules.Add(newRule);

此代码在Windows 7上运行良好,但在Windows XP上无效。在我的项目中,我刚刚引用了NetFwTypeLib COM库。 例外情况表明它无法使用{E2B3C97F-6AE1-41AC-817A-F6F92166D7DD} Guid查找和实例化该类。 请你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您似乎正在编写针对远程安全API的Windows防火墙,该版本适用于vista。赠与你指的是INetFwPolicy2。

引自MSDN

  

Windows XP Service Pack支持Windows防火墙API   2(SP2)。 (对于Windows Vista及更高版本,请使用Windows防火墙   建议使用高级安全API。)

我想看看Using Windows Firewall for Windows XP with SP2 API (Windows) 哪些应该给你一些指示,或至少一些更多的弹药用于进一步的谷歌搜索。