用C#来控制高级安全Windows防火墙 您所在的位置:网站首页 win10高级防火墙 用C#来控制高级安全Windows防火墙

用C#来控制高级安全Windows防火墙

2024-07-03 00:53| 来源: 网络整理| 查看: 265

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

下面就告诉如何来做:

的状态界面如下:

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

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

image

image

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

image

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

using NetFwTypeLib;

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

//启用或禁用,适用于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 Vista/7/2008 R2 //mgr2.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_ALL, false);

//启用或禁用 - 域配置文件,适用于Windows Vista/7/2008 R2 mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, false);

//启用或禁用 - 公用配置文件,适用于Windows Vista/7/2008 R2 mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, true );

//启用或禁用 - 专有配置文件,适用于Windows Vista/7/2008 R2 mgrWithAdSecurity.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, false);

//检测的状态

//来自 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);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有