使用c#实现开启或关闭防火墙

  介绍

使用c#实现开启或关闭防火墙?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> 1,判断程序是否拥有管理员权限

需要引用命名空间:System.Security。校长

///& lt; summary>///判断程序是否拥有管理员权限///& lt;/summary>///& lt; returns>事实:是管理员;错误的:不是管理员& lt;/returns>
  公共静态bool IsAdministrator ()
  {
  WindowsIdentity电流=WindowsIdentity.GetCurrent ();
  WindowsPrincipal WindowsPrincipal=new WindowsPrincipal(电流);
  返回windowsPrincipal.IsInRole (WindowsBuiltInRole.Administrator);
  }

<强> 2,注册表修改防火墙

需要引用命名空间:微软。Win32

///& lt; summary>///通过注册表操作防火墙///& lt;/summary>///& lt;参数name=癲omainState"在域网络防火墙(禁用:0;启用(默认):1)& lt;/param>///& lt;参数name=皃ublicState"在公共网络防火墙(禁用:0;启用(默认):1)& lt;/param>///& lt;参数name=皊tandardState"在专用网络防火墙(禁用:0;启用(默认):1)& lt;/param>///& lt; returns> & lt;/returns>
  公共静态bool FirewallOperateByRegistryKey (int domainState=1, int publicState=1, int standardState=1)
  {
  RegistryKey关键=Registry.LocalMachine;
  试一试
  {
  字符串路径=癏KEY_LOCAL_MACHINE \ \系统\ \ ControlSet001 \ \服务\ \ SharedAccess \ \ \ \ FirewallPolicy"违约;
  RegistryKey防火墙=键。OpenSubKey(路径,真正的);
  RegistryKey domainProfile=firewall.OpenSubKey (“DomainProfile",真实);
  RegistryKey publicProfile=firewall.OpenSubKey (“PublicProfile",真实);
  RegistryKey standardProfile=firewall.OpenSubKey (“StandardProfile",真实);
  domainProfile.SetValue (“EnableFirewall"、domainState RegistryValueKind.DWord);
  publicProfile.SetValue (“EnableFirewall"、publicState RegistryValueKind.DWord);
  standardProfile.SetValue (“EnableFirewall"、standardState RegistryValueKind.DWord);
  }
  捕获(异常e)
  {
  字符串错误=$“注册表修改出错:{e.Message}“;
  抛出新的异常(错误);
  }
  返回true;
  }

, <强> 3,直接操作防火墙对象

需要在项目引用中添加对NetFwTypeLib的引用,并引用命名空间NetFwTypeLib

///& lt; summary>///通过对象防火墙操作///& lt;/summary>///& lt;参数name=癷sOpenDomain"在域网络防火墙(禁用:假;启用(默认):真正的)& lt;/param>///& lt;参数name=癷sOpenPublicState"在公共网络防火墙(禁用:假;启用(默认):真正的)& lt;/param>///& lt;参数name=癷sOpenStandard"在专用网络防火墙(禁用:假;启用(默认):真正的)& lt;/param>///& lt; returns> & lt;/returns>
  公共静态bool FirewallOperateByObject (bool isOpenDomain=true, bool isOpenPublicState=true, bool isOpenStandard=true)
  {
  试一试
  {
  INetFwPolicy2 firewallPolicy=(INetFwPolicy2) Activator.CreateInstance (Type.GetTypeFromProgID (“HNetCfg.FwPolicy2"));//启用& lt;高级安全窗口防火墙比;-专有配置文件的防火墙
  firewallPolicy.set_FirewallEnabled (NET_FW_PROFILE_TYPE2_。NET_FW_PROFILE2_PRIVATE isOpenStandard);//启用& lt;高级安全窗口防火墙比;——公用配置文件的防火墙
  firewallPolicy.set_FirewallEnabled (NET_FW_PROFILE_TYPE2_。NET_FW_PROFILE2_PUBLIC isOpenPublicState);//启用& lt;高级安全窗口防火墙比;——域配置文件的防火墙
  firewallPolicy.set_FirewallEnabled (NET_FW_PROFILE_TYPE2_。NET_FW_PROFILE2_DOMAIN isOpenDomain);
  }
  捕获(异常e)
  {
  字符串错误=$“防火墙修改出错:{e.Message}“;
  抛出新的异常(错误);
  }
  返回true;
  }

关于使用c#实现开启或关闭防火墙问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

使用c#实现开启或关闭防火墙