Использование NetFwTypeLib для блокировки или разблокировки портов с помощью настроек брандмауэра не работало в Windows XP.

Я пытался заблокировать или разблокировать, используя порт 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. В моем проекте я только что сослался на COM-библиотеку NetFwTypeLib. Исключение говорит о том, что ему не удалось найти и создать экземпляр класса с {E2B3C97F-6AE1-41AC-817A-F6F92166D7DD} Guid. Пожалуйста, не могли бы вы помочь мне в этом?


person Cheb Bilel    schedule 07.03.2013    source источник


Ответы (1)


Похоже, вы пишете против брандмауэра Windows с API расширенной безопасности, который предназначен для Vista и выше. Отдача заключается в том, что вы ссылаетесь на INetFwPolicy2.

Цитата из MSDN

API брандмауэра Windows поддерживается в Windows XP с пакетом обновления 2 (SP2). (Для Windows Vista и более поздних версий рекомендуется использовать брандмауэр Windows с API повышенной безопасности.)

Я бы посмотрел на Использование брандмауэра Windows для Windows XP с API SP2 (Windows) , который должен дать вам некоторые подсказки или, по крайней мере, дополнительные возможности для дальнейших поисков в Google.

person David Christiansen    schedule 14.03.2013