Как я могу добавить исключение в брандмауэр Windows для SQL Server Express с использованием C # - PullRequest
1 голос
/ 09 ноября 2010

Я хотел бы добавить исключение в брандмауэр Windows для SQL Server Express 2008 R2 с использованием C #.

Как мне это сделать?

Сценарий:

  • У меня есть приложение, которое установлено с базой данных Sql Server 2008 express R2,
  • Я хотел бы добавить исключение для брандмауэра, чтобы другие пользователи могли подключаться к базе данных.(TCP включен в файле конфигурации для SQL Express)

Как это можно сделать с помощью C #, я хотел бы сделать это автоматически при первом запуске приложения или в процессе установки с настраиваемыми действиями.

Ответы [ 4 ]

2 голосов
/ 09 ноября 2010

Это можно сделать довольно легко в C #, помимо прочего, с помощью брандмауэра Windows. Дополнительную информацию см. В этой статье Управление брандмауэром Windows C #

Вы также можете посмотреть ответ на вопрос здесь .

1 голос
/ 09 ноября 2010

Вот несколько вариантов:

Контроллер брандмауэра Windows XP SP2

http://www.codeproject.com/KB/winsdk/WinXPSP2Firewall.aspx

Управление брандмауэром Windows с помощью C # через COM Interop

http://www.shafqatahmed.com/2008/01/controlling-win.html

Синтаксис команды Netsh для контекста межсетевого экрана Netsh

http://technet.microsoft.com/en-us/library/bb490617.aspx

1 голос
/ 09 ноября 2010

Попробуйте ссылку . Оборачивает доступ к API брандмауэра Windows.

Должен сделать свое дело.

EDIT:

На самом деле это выглядит лучше -> Автоматизация настроек брандмауэра Windows с помощью C #

Вы должны быть в состоянии открыть порт, который вы хотите, используя этот

1: INetFwOpenPorts ports; 
2: INetFwOpenPort port; 
3: port.Port = 1433; /* port no */
4: port.Name = “Application1”; /*name of the application using the port */
5: port.Enabled =  true; /* enable the port */
6: /*other properties like Protocol, IP Version can also be set accordingly
7: now add this to the GloballyOpenPorts collection */
8: 
9: Type NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false); 
10: INetFwMgr mgr = (INetFwMgr)Activator.CreateInstance(NetFwMgrType); 
11: ports = (INetFwOpenPorts)mgr.LocalPolicy.CurrentProfile.GloballyOpenPorts; 
12: 
13: ports.Add(port);
14: 

Обратите внимание, что в Visual Studio вам нужно добавить ссылку NetFwTypeLib COM к вашему проекту, а также включить NetFwTypeLib в ваш проект (using NetFwTypeLib;)

0 голосов
/ 03 декабря 2018

Здесь вы можете создать правило входящего брандмауэра для порта sql server 1433 с многопрофильным Domain, Public и Private через C #.

Сначала вам нужно импортировать dll из вашей системы «C: \ Windows \ System32 / FirewallAPI.dll». Добавьте эту DLL к вашему проекту. Зайдите в обозреватель решений в Visual Studio -> Ссылки-> Добавить ссылку-> нажмите кнопку Обзор рядом с ок и нажмите кнопку отмены -> выберите путь C: \ Windows \ System32 / FirewallAPI.dll и добавьте DLL.

После добавления dll используйте пространство имен «NetFwTypeLib» в своем коде, как показано выше в программе. использование NetFwTypeLib;

   using NetFwTypeLib;
   namespace ConsoleAppTestDemo
   {
    class Program
    {
     static void Main(string[] args)
     {
        Type tNetFwPolicy2 = Type.GetTypeFromProgID("HNetCfg.FwPolicy2");
        INetFwPolicy2 fwPolicy2 = (INetFwPolicy2)Activator.CreateInstance(tNetFwPolicy2);

        // Let's create a new rule
        INetFwRule2 inboundRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
        inboundRule.Enabled = true;
        //Allow through firewall
        inboundRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;

        //For all profile
        inboundRule.Profiles = (int)NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_ALL;

        //Using protocol TCP
        inboundRule.Protocol = 6; // TCP
        //Local Port 1433
        inboundRule.LocalPorts = "1433";
        //Name of rule
        inboundRule.Name = "SQLRule";

        // Now add the rule
        INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
        firewallPolicy.Rules.Add(inboundRule);
    }
}

}

После этого вы можете проверить входящее правило брандмауэра. enter image description here

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