Программно добавить приложение во все профили Windows Firewall (Vista +) - PullRequest
6 голосов
/ 13 апреля 2011

Я искал вокруг, и есть похожие вопросы по SO, однако никто не говорит о том, как добавить исключение в «All Profile» (Windows 7, AKA «Any Profile» в Vista / Windows Server 2008). Примеры в интернете говорят только о добавлении в текущий профиль.

Причина этого в том, что у меня проблема с одной из моих виртуальных машин: Windows 2008 x86, текущий профиль брандмауэра - Домен, и мое приложение добавлено в Список исключений домена. (Настройка брандмауэра по умолчанию: блокировать все входящие вызовы, которых нет в списке исключений.) Однако входящие звонки по-прежнему блокируются, если: 1. Отключите файервол на этой виртуальной машине. 2. вручную измените профиль правила моего приложения на «любой»

Это очень запутанно, так как я думал, что только активный профиль должен быть «активным» и должен быть функциональным, независимо от того, другие профили блокируют входящие вызовы моего приложения.

Я использую интерфейс XetP2 INetFwMgr для добавления исключений, в которых отсутствует поддержка «любого» профиля.

Я использую c #, но любой язык с примером будет оценен.

1 Ответ

8 голосов
/ 13 апреля 2011

Вы можете попробовать что-то вроде этого:

using System;
using NetFwTypeLib;

namespace FirewallManager

{
  class Program
  {
    static void Main(string[] args)
    {
        INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
        firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
        firewallRule.Description = "Allow notepad";
        firewallRule.ApplicationName = @"C:\Windows\notepad.exe";
        firewallRule.Enabled = true;
        firewallRule.InterfaceTypes = "All";
        firewallRule.Name = "Notepad";

        INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
            Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
        firewallPolicy.Rules.Add(firewallRule);

    }
  }
}

Для полноты добавьте ссылку на c: \ Windows \ System32 \ FirewallAPI.dll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...