当前位置:网站首页>简单介绍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
边栏推荐
- Dynamic query processing method of stored procedure
- How to make scripts compatible with both Python 2 and python 3?
- 计算机网络 应用层
- 寻找性能更优秀的动态 Getter 和 Setter 方案
- Aprelu: cross border application, adaptive relu | IEEE tie 2020 for machine fault detection
- 接口测试工具Eolinker进行post请求
- 代码保存
- Iterm2 configuration and beautification
- AI人工智能编程培训学什么课程?
- 写时复制集合 —— CopyOnWriteArrayList
猜你喜欢

Experiment 1 assignment

Problem solving templates for subsequence problems in dynamic programming

Newbe.ObjectVisitor 样例 1

Table join

VIM 入门手册, (VS Code)

Dynamic query processing method of stored procedure

Mobile big data own website precise marketing and accurate customer acquisition

如何让脚本同时兼容Python2和Python3?

Five phases of API life cycle

写时复制集合 —— CopyOnWriteArrayList
随机推荐
Flink的DataSource三部曲之三:自定义
Esockettimeout solution in request in nodejs
JVM真香系列:轻松理解class文件到虚拟机(上)
Programmers should know the URI, a comprehensive understanding of the article
Table join
200 programmers interview experience, all here
Array acquaintance
Nodejs中request出现ESOCKETTIMEDOUT解决方案
选择API管理平台之前要考虑的5个因素
LeetCode-11:盛水最多的容器
The road of cloud computing - going to sea - small goal: Hello world from. Net 5.0 on AWS
几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!
使用容器存储表格数据
Copy the picture
Realization of file copy
C / C + + learning diary: original code, inverse code and complement code
Execution of SQL statement
接口测试工具Eolinker进行post请求
To introduce to you, this is my flow chart software—— draw.io
Python features and building environment