当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- 装饰器(一)
- 大数据软件学习入门技巧
- Brief introduction of Integrated Architecture
- Programmers should know the URI, a comprehensive understanding of the article
- APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!
- 华为HCIA笔记
- How to reduce the resource consumption of istio agent through sidecar custom resource
- 梁老师小课堂|谈谈模板方法模式
- How does pipedrive support quality publishing with 50 + deployments per day?
- How to deploy pytorch lightning model to production
猜你喜欢
The road of cloud computing - going to sea - small goal: Hello world from. Net 5.0 on AWS
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!
LeetCode-15:三数之和
JVM Zhenxiang series: easy understanding of class files to virtual machines (Part 2)
Mycat搭建
Have you ever thought about why the transaction and refund have to be split into different tables
表连接
基于链表的有界阻塞队列 —— LinkedBlockingQueue
c++11-17 模板核心知识(二)—— 类模板
Mobile big data own website precise marketing and accurate customer acquisition
随机推荐
当我们聊数据质量的时候,我们在聊些什么?
Copy on write collection -- copyonwritearraylist
你有没有想过为什么交易和退款要拆开不同的表
B. protocal has 7000eth assets in one week!
Tasks of the first week of information security curriculum design (analysis of 7 instructions)
CMS垃圾收集器
First development of STC to stm32
Python features and building environment
Travel notes of csp-s 2020
Nodejs中request出现ESOCKETTIMEDOUT解决方案
JVM Zhenxiang series: easy understanding of class files to virtual machines (Part 2)
Decorator (2)
Experiment 1 assignment
The interface testing tool eolinker makes post request
Programmers should know the URI, a comprehensive understanding of the article
Flink's datasource Trilogy 3: customization
老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”
使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
Pipedrive如何在每天部署50+次的情况下支持质量发布?
Why need to use API management platform