设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间22 现在时间22 缓存数据 关关难过关关过,夜夜难熬夜夜熬。万般皆苦,悲欢自渡,他人难悟。晚安!

关关难过关关过,夜夜难熬夜夜熬。万般皆苦,悲欢自渡,他人难悟。晚安!

查看: 1602|回复: 5

c# 通过代码开启或关闭防火墙

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:229
  • 打卡月天数:2
  • 打卡总奖励:3378
  • 最近打卡:2025-12-12 02:43:51
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
393
主题
359
精华
0
金钱
4566
积分
814
注册时间
2023-1-4
最后登录
2025-12-12

发表于 2023-2-26 15:42:37 | 显示全部楼层 |阅读模式
  通过代码操作防火墙的方式有两种:一是代码操作修改注册表启用或关闭防火墙;二是直接操作防火墙对象来启用或关闭防火墙。不论哪一种方式,都需要使用管理员权限,所以操作前需要判断程序是否具有管理员权限。
  1、判断程序是否拥有管理员权限

  需要引用命名空间:System.Security.Principal
  1. /// <summary>
  2. /// 判断程序是否拥有管理员权限
  3. /// </summary>
  4. /// <returns>true:是管理员;false:不是管理员</returns>
  5. public static bool IsAdministrator()
  6. {
  7.   WindowsIdentity current = WindowsIdentity.GetCurrent();
  8.   WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
  9.   return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
  10. }
复制代码
  2、注册表修改防火墙
  需要引用命名空间:Microsoft.Win32
  1. /// <summary>
  2. /// 通过注册表操作防火墙
  3. /// </summary>
  4. /// <param name="domainState">域网络防火墙(禁用:0;启用(默认):1)</param>
  5. /// <param name="publicState">公共网络防火墙(禁用:0;启用(默认):1)</param>
  6. /// <param name="standardState">专用网络防火墙(禁用:0;启用(默认):1)</param>
  7. /// <returns></returns>
  8. public static bool FirewallOperateByRegistryKey(int domainState=1, int publicState = 1, int standardState = 1)
  9. {
  10.   RegistryKey key = Registry.LocalMachine;
  11.   try
  12.   {
  13.     string path = "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\SharedAccess\\Defaults\\FirewallPolicy";
  14.     RegistryKey firewall = key.OpenSubKey(path, true);
  15.     RegistryKey domainProfile = firewall.OpenSubKey("DomainProfile", true);
  16.     RegistryKey publicProfile = firewall.OpenSubKey("PublicProfile", true);
  17.     RegistryKey standardProfile = firewall.OpenSubKey("StandardProfile", true);
  18.     domainProfile.SetValue("EnableFirewall", domainState, RegistryValueKind.DWord);
  19.     publicProfile.SetValue("EnableFirewall", publicState, RegistryValueKind.DWord);
  20.     standardProfile.SetValue("EnableFirewall", standardState, RegistryValueKind.DWord);
  21.   }
  22.   catch (Exception e)
  23.   {
  24.     string error = $"注册表修改出错:{e.Message}";
  25.     throw new Exception(error);
  26.   }
  27.   return true;
  28. }
复制代码
  3、直接操作防火墙对象
  需要在项目引用中添加对NetFwTypeLib的引用,并引用命名空间NetFwTypeLib
  1. /// <summary>
  2. /// 通过对象防火墙操作
  3. /// </summary>
  4. /// <param name="isOpenDomain">域网络防火墙(禁用:false;启用(默认):true)</param>
  5. /// <param name="isOpenPublicState">公共网络防火墙(禁用:false;启用(默认):true)</param>
  6. /// <param name="isOpenStandard">专用网络防火墙(禁用: false;启用(默认):true)</param>
  7. /// <returns></returns>
  8. public static bool FirewallOperateByObject(bool isOpenDomain = true, bool isOpenPublicState = true, bool isOpenStandard = true)
  9. {
  10.   try
  11.   {
  12.     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
  13.     // 启用<高级安全Windows防火墙> - 专有配置文件的防火墙
  14.     firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, isOpenStandard);
  15.     // 启用<高级安全Windows防火墙> - 公用配置文件的防火墙
  16.     firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, isOpenPublicState);
  17.     // 启用<高级安全Windows防火墙> - 域配置文件的防火墙
  18.     firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, isOpenDomain);
  19.   }
  20.   catch (Exception e)
  21.   {
  22.     string error = $"防火墙修改出错:{e.Message}";
  23.     throw new Exception(error);
  24.   }
  25.   return true;
  26. }
复制代码
以上就是c# 通过代码开启或关闭防火墙的详细内容,更多关于c# 防火墙的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:常驻代表
  • 打卡总天数:32
  • 打卡月天数:1
  • 打卡总奖励:428
  • 最近打卡:2025-12-19 08:16:09
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
478
积分
68
注册时间
2023-1-16
最后登录
2025-12-19

发表于 2023-2-28 16:48:53 | 显示全部楼层
免费分享的大佬,反手就是一个赞~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:常驻代表
  • 打卡总天数:31
  • 打卡月天数:0
  • 打卡总奖励:402
  • 最近打卡:2025-11-18 02:34:34
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
390
主题
320
精华
0
金钱
1478
积分
774
注册时间
2023-2-11
最后登录
2025-11-18

发表于 2023-5-17 09:33:23 | 显示全部楼层
感谢楼主分享~~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:18
  • 最近打卡:2025-10-21 22:51:08
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
32
积分
4
注册时间
2023-11-18
最后登录
2025-10-21

发表于 2025-2-13 04:43:37 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
19
积分
18
注册时间
2022-12-25
最后登录
2022-12-25

发表于 2025-3-18 10:31:10 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-26
最后登录
2022-12-26

发表于 7 天前 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼
6楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表