通过c sharp获取防火墙是否状态(返回防火墙是否启用的bool值)和修改和添加防火墙规则(最好不是通过修改注册表的方式)
时间: 2024-01-07 16:04:44 浏览: 19
可以使用.NET Framework中的System.Management命名空间中的ManagementClass类和ManagementObject类来实现获取防火墙状态和添加、修改防火墙规则。
获取防火墙状态的示例代码如下:
```csharp
using System.Management;
// 获取防火墙状态
ManagementClass firewall = new ManagementClass("root\SecurityCenter2", "FirewallProduct");
ManagementObjectCollection firewallCollection = firewall.GetInstances();
foreach (ManagementObject firewallInstance in firewallCollection)
{
bool firewallEnabled = (bool)firewallInstance["enabled"];
Console.WriteLine("防火墙是否启用:" + firewallEnabled);
}
```
添加、修改防火墙规则的示例代码如下:
```csharp
using System.Management;
// 添加防火墙规则
ManagementObject firewallRule = new ManagementClass("root\\StandardCimv2", "MSFT_NetFirewallRule").CreateInstance();
firewallRule["Name"] = "My Firewall Rule";
firewallRule["Description"] = "Allow inbound traffic on TCP port 8080";
firewallRule["Enabled"] = true;
firewallRule["Action"] = 1; // Allow
firewallRule["Direction"] = 1; // Inbound
firewallRule["Protocol"] = 6; // TCP
firewallRule["LocalPort"] = "8080";
firewallRule.Put();
```
这里使用的是"root\StandardCimv2"命名空间中的MSFT_NetFirewallRule类来添加防火墙规则,可以根据具体需求选择其他类。需要注意的是,这种方式需要管理员权限才能操作防火墙。