通过编程管理windows 防火墙

最近项目中需要通过程序自动设置windows 防火墙,查了一下资料,可以通过命令行netsh firewall 来实现。封装了一个类来实现对允许放开的程序(Allowed program)进行管理。管理其他内容比如放开端 口等方法是类似的。

程序中用到一个公共类 RunProcess,这个类可从我的另一篇文章 一个C#写的调用外部进程类 获得

namespace WinFirewall
{
   public enum TScope
   {
     ALL,
     SUBNET,
     CUSTOM,
   }
   public enum TMode
   {
     ENABLE,
     DISABLE,
   }
   /**//// <summary>
   /// Manage the allowed program with the Windows Firewall.
   /// </summary>
   public class AllowedProgram
   {
     Set AllowedProgram Help#region Set AllowedProgram Help
     /**//*
     set allowedprogram
        [ program = ] path
        [ [ name = ] name
         [ mode = ] ENABLE|DISABLE
         [ scope = ] ALL|SUBNET|CUSTOM
         [ addresses = ] addresses
         [ profile = ] CURRENT|DOMAIN|STANDARD|ALL ]
      Sets firewall allowed program configuration.
      Parameters:
      program - Program path and file name.
      name - Program name (optional).
      mode - Program mode (optional).
        ENABLE - Allow through firewall (default).
        DISABLE - Do not allow through firewall.
      scope - Program scope (optional).
        ALL  - Allow all traffic through firewall (default).
        SUBNET - Allow only local network (subnet) traffic through firewall.
        CUSTOM - Allow only specified traffic through firewall.
      addresses - Custom scope addresses (optional).
      profile - Configuration profile (optional).
        CURRENT - Current profile (default).
        DOMAIN  - Domain profile.
        STANDARD - Standard profile.
        ALL   - All profiles.
      Remarks: 'scope' must be 'CUSTOM' to specify 'addresses'.
      Examples:
        set allowedprogram C:MyAppMyApp.exe MyApp ENABLE
        set allowedprogram C:MyAppMyApp.exe MyApp DISABLE
        set allowedprogram C:MyAppMyApp.exe MyApp ENABLE CUSTOM
          157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet
        set allowedprogram program = C:MyAppMyApp.exe name = MyApp mode = ENABLE
        set allowedprogram program = C:MyAppMyApp.exe name = MyApp mode = DISABLE
        set allowedprogram program = C:MyAppMyApp.exe name = MyApp mode = ENABLE
          scope = CUSTOM addresses =
          157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet
     */
     #endregion
     private field#region private field
     private String m_Program;
     private String m_Name;
     private TScope m_Scope = TScope.ALL;
     private TMode m_Mode = TMode.ENABLE;
     private String m_Address;
     #endregion
     public property#region public property
     /**//// <summary>
     /// Program path and file name.
     /// </summary>
     public String Program
     {
       get
       {
         return m_Program;
       }
       set
       {
         m_Program = value;
       }
     }
     /**//// <summary>
     /// Program name (optional).
     /// </summary>
     public String Name
     {
       get
       {
         return m_Name;
       }
       set
       {
         m_Name = value;
       }
     }
     /**//// <summary>
     /// Program scope (optional).
     /// ALL  - Allow all traffic through firewall (default).
     /// SUBNET - Allow only local network (subnet) traffic through firewall.
     /// CUSTOM - Allow only specified traffic through firewall.    /// </summary>
     public TScope Scope
     {
       get
       {
         return m_Scope;
       }
       set
       {
         m_Scope = value;
       }
     }
     /**//// <summary>
     /// Program mode (optional).
     /// ENABLE - Allow through firewall (default).
     /// DISABLE - Do not allow through firewall
     /// </summary>
     public TMode Mode
     {
       get
       {
         return m_Mode;
       }
       set
       {
         m_Mode = value;
       }
     }
     /**//// <summary>
     /// Custom scope addresses (optional).
     /// </summary>
     /// <example>
     /// 157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0
     /// </example>
     public String Address
     {
       get
       {
         return m_Address;
       }
       set
       {
         m_Address = value;
       }
     }
     #endregion
     public method#region public method
     /**//// <summary>
     /// Set allowed program
     /// </summary>
     public void Set()
     {
       Debug.Assert(Program != null);
       if (Name == null)
       {
         Name = System.IO.Path.GetFileNameWithoutExtension(Program);
       }
       if (Scope == TScope.CUSTOM)
       {
         Debug.Assert(Address != null);
       }
       RunProcess runCmd = new RunProcess();
       String command;
       command = String.Format("firewall set allowedprogram {0} {1} {2} {3}",
         Program, Name, Mode.ToString(), Scope.ToString());
       if (Scope == TScope.CUSTOM)
       {
         command += " " + Address;
       }
       runCmd.Run("netsh", command);
       if (runCmd.Error != null && runCmd.Error != "")
       {
         throw new Exception(runCmd.Error);
       }
       if (!runCmd.Output.ToLower().Contains("ok."))
       {
         throw new Exception(runCmd.Output);
       }
     }
     /**//// <summary>
     /// Delete allowed program
     /// </summary>
     public void Delete()
     {
       Debug.Assert(Program != null);
       RunProcess runCmd = new RunProcess();
       String command = String.Format("firewall delete allowedprogram {0}",
         Program);
       runCmd.Run("netsh", command);
       if (runCmd.Error != null && runCmd.Error != "")
       {
         throw new Exception(runCmd.Error);
       }
       if (!runCmd.Output.ToLower().Contains("ok."))
       {
         throw new Exception(runCmd.Output);
       }
     }
     #endregion
   }
}

时间: 2024-12-31 21:25:17

通过编程管理windows 防火墙的相关文章

【转】自己开发程序管理WINDOWS防火墙

    2008-05-21 07:20作者:肖波出处:天极网责任编辑:nancy     最近项目中需要通过程序自动设置windows 防火墙,查了一下资料,可以通过命令行netsh firewall来实现.封装了一个类来实现对运行放开的程序(Allowed program)进行管理.管理其他内容比如放开端口等方法是类似的. 程序中用到一个公共类 RunProcess,这个类可从另一篇文章 <一个C#写的调用外部进程类> 获得 namespace WinFirewall {  public 

windows server 2010 如何通过C++编程来编辑防火墙的规则

问题描述 windows server 2010 如何通过C++编程来编辑防火墙的规则 msdn上是有demo的,但是只有添加规则的demo 现在我有两个问题: 1.如何编程删除某条规则: 2.如何自定义限定IP访问的规则: 均通过编程来实现,请问哪里有API或者源码 解决方案 调用HNetCfg.FwPolicy2,因为是同一个库,这里有C#的调用 参考https://assab.cs.washington.edu/cct/conferencexp/trunk/MSR.LST/Common/F

如何利用英特尔管理工具绕过Windows防火墙

微软透露,名为PLATINUM(铂金)的黑客组织,利用英特尔vPro处理器和芯片集中可用的主动管理技术(AMT),简单地完全绕过了Windows防火墙.     基本上, 该黑客组织的文件传输工具主要利用的,就是AMT中的Serial-over-LAN(SOL)串口I/O重定向信道.由于该信道独立于操作系统,主机设备上运行的防火墙和网络监视应用,根本看不到它的任何通信. 需要说明的是,以芯片集提供的TCP信道暴露出虚拟串行设备的SOL,默认是禁用的,需要管理员权限才能在目标工作站上实际启用.鉴于

TCP/IP 数据包处理路径,了解WINDOWS防火墙,更好的保护系统

简介 随着 Microsoft Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1 新增了 Windows 防火墙,以及 Internet 协议安全 (IPsec) 在公司 Intranet 中日益广泛的应用,信息技术 (IT) 专业人士需要了解 TCP/IP 协议及 Windows 中的相关组件处理单播 Internet 协议 (IP) 数据包的具体方式.有关 IP 数据包处理路径的详细知识,可以让您更轻松地掌握配置数据

巧用DOS命令 轻松管理XP防火墙

对于Windows系统自带有防火墙功能,不少人认为该功能并不是十分强大,无法保护好系统安全,于是安装一些杀毒软件,来保护系统安全.其实,我们也是可以用自带防火墙保护好系统的. 在管理Windows系统内置的防火墙时,很多人会在Windows状态下,进入防火墙的参数配置界面来进行管理.事实上,还通过一些简单的DOS命令,来对防火墙进行快速管理控制.有时,我们的电脑可能会遭到攻击,导致网络不能访问,这时可通过DOS命令,快速让防火墙的参数恢复到默认数值; [attach]140474[/attach

如何使用组策略部署Windows防火墙

在管理规模较大的网络环境时,网络安全往往是花费精力最多的一环.就拿配置Windows XP SP2的防火墙来说,如果让网管为网内计算机逐一进行配置的话,工作量会非常大,而且在细节配置上也容易出错.那么,如何才能提高规模化环境内的防火墙配置效率呢? Windows防火墙是Windows XP SP2中一个极为重要的安全设计,它可以有效地协助我们完成计算机的安全管理.今天,笔者将为大家介绍如何使用组策略(Group Policy)在机房中集中部署Windows防火墙,提高为网内计算机配置防火墙的效率

windows防火墙打不开解决方法

一.防火墙配置出错 开始-->运行-->gpedit.msc 这时,打开了组策略 在左面分级展开 计算机配置-->管理模板-->网络-->网络连接-->Windows 防火墙 然后在这下面就是组策略强制限制的一些选项,找到你所需要的配置 定义成启用 再设置回"未配置" 就可以了. (有些软件 更改的注册表,有时 在组策略里显示不出来,可能更改以后 组策略里仍然是未配置的,所以要配置一下,再配置回来) 二.安全中心被关闭 防火墙启用的选项变成灰色,无法

玩转Windows服务系列&amp;mdash;&amp;mdash;命令行管理Windows服务

原文:玩转Windows服务系列--命令行管理Windows服务 说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令,命令行都是非常方便以及强大的工具. 接下来就看一下如何通过cmd命令管理Windows服务. 管理Windows服务的主要cmd命令 管理Windows服务的命令应该有很多,但是我所了解到的命令主要有两个:sc.net. 说是两个cmd命令,实际就是windows的system32目录下的两个执行程

笔记本电脑如何关闭Windows防火墙?(Win8)

1. 在电脑桌面我们按快捷键[WIN]+[X],然后在弹出菜单中我们点击[控制面板].       2. 进入控制面板管理界面我们点击[系统和安全],如下图所示.    3. 进入系统和安全页面中会看到有一个[Windows防火墙]选项了,就是一个墙与外面一个地球图标了,我们点击此图标进入.    4. 进入到防火墙管理界面我们可以看到左边有一个,[启用或关闭Windows防火墙]菜单了我们可以点击.    5. 如果我想全部关闭称们可以把专用网络与来宾或公用网络都关闭了,点击[关闭Window