当前位置:网站首页>简单介绍c#通过代码开启或关闭防火墙示例
简单介绍c#通过代码开启或关闭防火墙示例
2020-11-08 23:48:00 【Linux就该这么学】
这篇文章主要介绍了c# 通过代码开启或关闭防火墙的示例,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下 |
通过代码操作防火墙的方式有两种:一是代码操作修改注册表启用或关闭防火墙;二是直接操作防火墙对象来启用或关闭防火墙。不论哪一种方式,都需要使用管理员权限,所以操作前需要判断程序是否具有管理员权限。
需要引用命名空间:System.Security.Principal
/// 判断程序是否拥有管理员权限
/// true:是管理员;false:不是管理员
public static bool IsAdministrator()
{
WindowsIdentity current = WindowsIdentity.GetCurrent();
WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
}
需要引用命名空间:Microsoft.Win32
/// 通过注册表操作防火墙
/// 域网络防火墙(禁用:0;启用(默认):1)
/// 公共网络防火墙(禁用:0;启用(默认):1)
/// 专用网络防火墙(禁用:0;启用(默认):1)
public static bool FirewallOperateByRegistryKey(int domainState=1, int publicState = 1, int standardState = 1)
{
RegistryKey key = Registry.LocalMachine;
try
{
string path = "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\SharedAccess\\Defaults\\FirewallPolicy";
RegistryKey firewall = key.OpenSubKey(path, true);
RegistryKey domainProfile = firewall.OpenSubKey("DomainProfile", true);
RegistryKey publicProfile = firewall.OpenSubKey("PublicProfile", true);
RegistryKey standardProfile = firewall.OpenSubKey("StandardProfile", true);
domainProfile.SetValue("EnableFirewall", domainState, RegistryValueKind.DWord);
publicProfile.SetValue("EnableFirewall", publicState, RegistryValueKind.DWord);
standardProfile.SetValue("EnableFirewall", standardState, RegistryValueKind.DWord);
}
catch (Exception e)
{
string error = $"注册表修改出错:{e.Message}";
throw new Exception(error);
}
return true;
}
需要在项目引用中添加对NetFwTypeLib的引用,并引用命名空间NetFwTypeLib
/// 通过对象防火墙操作
/// 域网络防火墙(禁用:false;启用(默认):true)
/// 公共网络防火墙(禁用:false;启用(默认):true)
/// 专用网络防火墙(禁用: false;启用(默认):true)
public static bool FirewallOperateByObject(bool isOpenDomain = true, bool isOpenPublicState = true, bool isOpenStandard = true)
{
try
{
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// 启用<高级安全Windows防火墙> - 专有配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, isOpenStandard);
// 启用<高级安全Windows防火墙> - 公用配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, isOpenPublicState);
// 启用<高级安全Windows防火墙> - 域配置文件的防火墙
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, isOpenDomain);
}
catch (Exception e)
{
string error = $"防火墙修改出错:{e.Message}";
throw new Exception(error);
}
return true;
}
以上就是c# 通过代码开启或关闭防火墙的详细内容。
版权声明
本文为[Linux就该这么学]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3585265/blog/4708413
边栏推荐
- Five design schemes of singleton mode
- Newbe.ObjectVisitor 样例 1
- The minimum insertion times of palindrome
- JVM真香系列:轻松理解class文件到虚拟机(下)
- 程序员都应该知道的URI,一文帮你全面了解
- 非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue
- Problem solving templates for subsequence problems in dynamic programming
- 存储过程动态查询处理方法
- Server side resolution of lengthfieldbasedframedecoder of GetBytes
- VIM 入门手册, (VS Code)
猜你喜欢
Mobile big data own website precise marketing and accurate customer acquisition
Solve the problem that the value of new date() of JS in IE and Firefox is invalid date and Nan Nan
数据库设计:范式与反范式
Fiddler无法正常抓取谷歌等浏览器的请求_解决方案
[cloud service] there are so many ECS instances on alicloud server, how to select the type? Best practice note
Looking for better dynamic getter and setter solutions
Introduction skills of big data software learning
What courses will AI programming learn?
Looking for a small immutable dictionary with better performance
Newbe.ObjectVisitor Example 1
随机推荐
MYCAT build
Flink's datasource Trilogy 3: customization
c++11-17 模板核心知识(二)—— 类模板
写时复制集合 —— CopyOnWriteArrayList
Using annotation + interceptor to implement asynchronous execution
Table join
为什么需要使用API管理平台
Dynamic ReLU:微软推出提点神器,可能是最好的ReLU改进 | ECCV 2020
寻找性能更优秀的不可变小字典
APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!
API生命周期的5个阶段
Python features and building environment
动态规划答疑篇
Case analysis of entitycore framework
Five design schemes of singleton mode
解决IE、firefox浏览器下JS的new Date()的值为Invalid Date、NaN-NaN的问题
leetcode之反转字符串中的元音字母
LeetCode-15:三数之和
. net core cross platform resource monitoring library and dotnet tool
Looking for better dynamic getter and setter solutions