在Windows XP上,使用NetFwTypeLib通过防火墙设置来阻止或取消阻止端口是行不通的
本文关键字:取消 行不通 设置 XP Windows 使用 NetFwTypeLib 防火墙 | 更新日期: 2023-09-27 18:02:47
我试图阻止或解除使用TCP端口80
的阻止,使用以下代码:
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的类。
你能帮我吗?
您似乎是针对具有高级安全API的Windows防火墙编写的,该API适用于Vista以后的版本。问题是你指的是INetFwPolicy2
。
引自MSDN
Windows XP与Service Pack支持Windows Firewall API2 (SP2)。(对于Windows Vista及更高版本,请使用Windows防火墙)
我想看看使用Windows防火墙的Windows XP与SP2 API (Windows)这应该会给你一些提示,或者至少为进一步的谷歌搜索提供更多的弹药。