专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:58:48       共计:3651 浏览

有的时候我们需要在自己的产品中检测<高级安全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下使用C#获取特定进程网络流量

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有