当前位置:网站首页>A brief introduction of C code to open or close the firewall example
A brief introduction of C code to open or close the firewall example
2020-11-08 23:48:00 【That's how Linux should learn】
This article mainly introduces c# Examples of turning firewalls on or off by code , To help people better understand and use c#, Interested friends can learn about |
There are two ways to operate firewalls through code : First, code operation to modify the registry, enable or close the firewall ; The other is to directly operate the firewall object to enable or close the firewall . Either way , You need to use administrator rights , Therefore, it is necessary to determine whether the program has administrator rights before operation .
You need to reference a namespace :System.Security.Principal
/// Determine whether the program has administrator rights
/// true: It's the administrator ;false: Not an administrator
public static bool IsAdministrator()
{
WindowsIdentity current = WindowsIdentity.GetCurrent();
WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
}
You need to reference a namespace :Microsoft.Win32
/// Through the registry operation firewall
/// Domain network firewall ( Ban :0; Enable ( Default ):1)
/// Public network firewall ( Ban :0; Enable ( Default ):1)
/// Private network firewall ( Ban :0; Enable ( Default ):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 = $" Error modifying registry :{e.Message}";
throw new Exception(error);
}
return true;
}
You need to add a reference to the project NetFwTypeLib References to , And reference the namespace NetFwTypeLib
/// Through the object firewall operation
/// Domain network firewall ( Ban :false; Enable ( Default ):true)
/// Public network firewall ( Ban :false; Enable ( Default ):true)
/// Private network firewall ( Ban : false; Enable ( Default ):true)
public static bool FirewallOperateByObject(bool isOpenDomain = true, bool isOpenPublicState = true, bool isOpenStandard = true)
{
try
{
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
// Enable < Advanced security Windows A firewall > - Proprietary profile firewall
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PRIVATE, isOpenStandard);
// Enable < Advanced security Windows A firewall > - Firewall for public profiles
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_PUBLIC, isOpenPublicState);
// Enable < Advanced security Windows A firewall > - Domain profile firewall
firewallPolicy.set_FirewallEnabled(NET_FW_PROFILE_TYPE2_.NET_FW_PROFILE2_DOMAIN, isOpenDomain);
}
catch (Exception e)
{
string error = $" Firewall modification error :{e.Message}";
throw new Exception(error);
}
return true;
}
That's all c# Turn on or off the details of the firewall by code .
This paper addresses :https://www.linuxprobe.com/close-linux-open.html
版权声明
本文为[That's how Linux should learn]所创,转载请带上原文链接,感谢
边栏推荐
猜你喜欢
国内三大云数据库测试对比
APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020
Concurrent linked queue: a non blocking unbounded thread safe queue
梁老师小课堂|谈谈模板方法模式
Leetcode-11: container with the most water
Share API on the web
接口测试工具Eolinker进行post请求
Flink的DataSource三部曲之三:自定义
Mobile big data own website precise marketing and accurate customer acquisition
综合架构的简述
随机推荐
Python的特性与搭建环境
JVM Zhenxiang series: easy understanding of class files to virtual machines (Part 2)
Concurrent linked queue: a non blocking unbounded thread safe queue
代码保存
第五章编程
大数据软件学习入门技巧
Leetcode-15: sum of three numbers
表连接
程序员都应该知道的URI,一文帮你全面了解
为什么需要使用API管理平台
App crashed inexplicably. At first, it thought it was the case of the name in the header. Finally, it was found that it was the fault of the container!
The interface testing tool eolinker makes post request
如何将 PyTorch Lightning 模型部署到生产中
Iterm2 configuration and beautification
How to get started with rabbitmq
华为HCIA笔记
leetcode之反转字符串中的元音字母
Tasks of the first week of information security curriculum design (analysis of 7 instructions)
Decorator (2)
装饰器(二)