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

问题描述 投票:0回答:1

我试图使用 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 找到并实例化该类。

请问你能帮我吗?

c# windows-xp windows-firewall-api
1个回答
1
投票

您似乎正在针对具有高级安全 API 的 Windows 防火墙进行编写,该 API 适用于 Vista 及以上版本。泄露的信息是您指的是 INetFwPolicy2。

引自MSDN

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

我想看看 使用适用于带有 SP2 API 的 Windows XP 的 Windows 防火墙 (Windows) 这应该会给你一些指导,或者至少为进一步的谷歌搜索提供更多的弹药。

© www.soinside.com 2019 - 2024. All rights reserved.