当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- 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!
- Linked blocking queue based on linked list
- 平台商业化能力的另一种表现形式SAAS
- How to make scripts compatible with both Python 2 and python 3?
- 第五章编程
- 【200人面试经验】,程序员面试,常见面试题解析
- Travel notes of csp-s 2020
- Five design patterns frequently used in development
- 用两个栈实现队列
- Octave basic syntax
猜你喜欢
随机推荐
六家公司CTO讲述曾经历的“宕机噩梦”
写时复制集合 —— CopyOnWriteArrayList
链表
简单介绍c#通过代码开启或关闭防火墙示例
第五章编程
On buffer overflow
数据库设计:范式与反范式
Linked blocking queue based on linked list
采用注解+拦截器的方式进行异步执行的实现方式
Newbe.ObjectVisitor Example 1
对象
理论与实践相结合彻底理解CORS
Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
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!
云计算之路-出海记-小目标:Hello World from .NET 5.0 on AWS
APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!
Python应用场景多不多?
The vowels in the inverted string of leetcode
How to analyze Android anr problems
表连接