有的时候我们需要在自己的产品中检测<高级安全Windows防火墙>的状态,并有可能需要加入一些规则甚至需要关闭掉高级安全Windows防火墙。

下面就告诉如何来做:

<高级安全Windows防火墙>的状态界面如下:

已测试环境 Windows Server 2008 Enterprise X64 / Windows Server 2008 R2 Enterprise

PS: 我只关注于服务器环境,:)

第一步:添加对于Windows Firewall with Advanced Security APIs的COM引用INetFwPolicy2

第二步:引入需要的命名空间

using NetFwTypeLib;

第三步:上代码,自己看了

//启用或禁用<高级安全Windows防火墙>,适用于Windows Vista/7/2008 R2(x86/x64)

//来自 Blog.WebServerGuard.Net 
bool Net_FW_Domain_Status = false; 
bool Net_FW_Public_Status = false; 
bool Net_FW_Private_Status = false;

Type NetFwMgrTypeWithAdSecurity = Type.GetTypeFromProgID("HNetCfg.FwPolicy2", false); 
INetFwPolicy2  mgrWithAdSecurity = (INetFwPolicy2 )Activator.CreateInstance(NetFwMgrTypeWithAdSecurity);

//启用或禁用<高级安全Windows防火墙> - 所有配置文件,适用于Windows Vista/7/2008 R2 
//mgr2.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_ALL, false);

//启用或禁用<高级安全Windows防火墙> - 域配置文件,适用于Windows Vista/7/2008 R2 
mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, false);

//启用或禁用<高级安全Windows防火墙> - 公用配置文件,适用于Windows Vista/7/2008 R2 
mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, true );

//启用或禁用<高级安全Windows防火墙> - 专有配置文件,适用于Windows Vista/7/2008 R2 
mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, false);

//检测<高级安全Windows防火墙>的状态

//来自 Blog.WebServerGuard.Net 
Net_FW_Domain_Status=mgrWithAdSecurity.get_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN); 
MessageBox.Show("Net_FW_Domain_Status:" + Net_FW_Domain_Status.ToString ());

Net_FW_Public_Status=mgrWithAdSecurity.get_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC); 
MessageBox.Show("Net_FW_Public_Status:" + Net_FW_Public_Status.ToString());

Net_FW_Private_Status=mgrWithAdSecurity.get_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE); 
MessageBox.Show("Net_FW_Private_Status:" + Net_FW_Private_Status.ToString());

域配置文件、专有配置文件、公用配置文件适用范围请自行查阅资料。

更多功能可以参考:

《Using Windows Firewall with Advanced Security》 - http://msdn.microsoft.com/en-us/library/aa366418(VS.85).aspx

上面的资料给出了C/C++/VBScript的示例代码,很容易对应到相应的C#代码

如何 添加 和 删除 允许通过防火墙的程序进入例外列表

本篇,我们用到了COM引用,因为不使用COM引用的话,操作太过繁琐了 

一、 添加 COM 引用

在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可

二、 引入命名空间

using NetFwTypeLib;

三、 添加允许通过防火墙的例外程序

//创建firewall管理类的实例
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr")); //创建一个认证程序类的实例
INetFwAuthorizedApplication app = (INetFwAuthorizedApplication)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication")); //在例外列表里,程序显示的名称
app.Name = "自定义"; //程序的决定路径,这里使用程序本身
app.ProcessImageFileName = Application.ExecutablePath; //是否启用该规则
app.Enabled = true; //加入到防火墙的管理策略
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app);
四、删除一个例外 列表 里的程序
INetFwMgr netFwMgr = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
//参数为程序的绝对路径
netFwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Remove(Application.ExecutablePath);

用C#来控制高级安全Windows防火墙的更多相关文章

  1. 高级安全Windows防火墙概述以及最佳实践

    本文简单介绍Windows防火墙的概念,给出使用场景并列出了常见的防火墙操作. 简介 在Windows NT6.0之后微软推出了高级安全Windows防火墙(简称WFAS),高级安全Windows防火 ...

  2. 【转】玩玩你的Windows防火墙——穿透与防御

    前言:在防火墙专区,我经常看见朋友们讨论,“某某防火墙的性能如何”,亦或是,“某某防火墙的防御能力如何”.实际上,一个防火墙所履行的基本职责便是“网络访问控制”,即放行我们允许的通信,阻止我们未允许的 ...

  3. 如何配置Windows 防火墙,允许SQL Server的远程连接

    一.如何找到SQL Server正在侦听的TCP端口,可以按一下步骤: 1.打开 SQL Server 配置管理器中,从开始->所有程序-> Microsoft SQL Server 20 ...

  4. 针对 SQL Server 2008 在Windows Server 2008上的访问配置 Windows 防火墙

    现在Windows Server 2008 服务器用的越来越多,2008的防火墙比2003的有了很大的增强,安全性有了更大的提高. 甚至80端口的出站默认都是被关闭的.所以如果在2008Server上 ...

  5. 配置Windows 防火墙,允许SQL Server的远程连接

    在运行SQL Server的服务器上,我们要找到哪些是SQL Server正在侦听的端口,并将其添加到Windows防火墙的入站例外. 首先,我们需要添加 SQL Server 服务侦听 Window ...

  6. 服务器安全策略之《启用Windows 防火墙情况下配置允许SQL Server远程连接》

    为了服务器的安全,通常情况下我们需要启用Windows 防火墙,然而在启用了Windows 防火墙后会发现会引发一系列的问题,比如无法通过本地远程服务器桌面.无法在本地远程连接SQL Server等, ...

  7. 利用ftp端口设置,浅谈windows防火墙之应用+ftp直接资源管理器登陆

    win服务器的版本是不错的.防火墙也比较能用.server-u 6.4则是比较稳定.兼容性好的的版本,所以很多人在用 1.服务器为了安全,一般开启windows高级防火墙,在网络连接处右键鼠标,有弹出 ...

  8. windows防火墙打不开的处理办法

    一.防火墙配置出错 开始-->运行-->gpedit.msc 这时,打开了组策略 在左面分级展开 计算机配置-->管理模板-->网络-->网络连接-->Window ...

  9. windows防火墙无法启动,服务不存在

    系统的防火墙无法启动,系统服务里面也没有防火墙的服务,用下面第一种方法,导 入注册表,重启服务器,在服务里面有防火墙的服务了,然后启动就好了,需要重新配置防火墙 在控制面板中启动防火墙的时候提示无法识 ...

随机推荐

  1. macos上改变输入法顺序

    设置界面上是不能拖放顺序的,唯一解决办法是: 一.先选择所有文档使用相同输入源 二.选择用美国英语 三.再选择允许多个输入源,再打开原来的中文输入法 顺序就调过来了!尼玛,这就是苹果的人性化?懒得吐嘈 ...

  2. hdu1078

    #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; i ...

  3. 关于layui弹出层的使用

    Jquery必须大于1.83 layui必须是all,否则不显示 <script src="../js/jquery-1.8.3.min.js"></script ...

  4. Window 7 安装Docker toolbox , 启动terminal时遇到的小问题

    参考:http://blog.csdn.net/tina_ttl/article/details/51372604 参考前面网页成功安装后打开terminal,出现下面问题: Looks like s ...

  5. Highest Price in Supply Chain (25)(DFS)(PAT甲级)

    #include<bits/stdc++.h>using namespace std;int fa;int degree[100007];vector<int>v[100007 ...

  6. hdu2874(lca / tarjan离线 + RMQ在线)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意: 给出 n 个顶点 m 条边的一个森林, 有 k 个形如 x y 的询问, 输出 x, ...

  7. [Xcode 实际操作]五、使用表格-(6)UITableView滑动到指定单元格

    目录:[Swift]Xcode实际操作 本文将演示如何使表格滑动到指定的索引路径. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首 ...

  8. 学习Vim的四周计划

    来源:Python程序员 ID:pythonbuluo vim具有自定义配色方案,语法高亮,linting和自动填充功能 Vim是一个以非常难学而闻名的命令行文本编辑器(有个关于Vim的笑话:问如何生 ...

  9. 洛谷 P1551 亲戚(并查集模板)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1551 思路: 很显然地我们会发现,这是一道并查集的模板题,并且是考察了并查集中的”并“和”查“的操 ...

  10. GUI的最终选择 Tkinter(一):Tkinter最初体验

    EasyGui就是一个简单的文字交互界面模块,从今天开始来开始学习Tkinter Tkinter是Python标准的Gui库,它实际是建立在Tk技术上的,Tk最初是为Tcl(一门工具名语言)所涉及的, ...