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