我正在检查防火墙.以下代码非常容易检查默认Windows防火墙的状态:
INetFwMgr manager = GetFireWallManager();
bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled;
if (isFirewallEnabled == false)
{
Console.WriteLine("Firewall is not enabled.");
}
else
{
Consoe.WriteLine("Firewall is enabled.");
}
Console.ReadLine();
private static INetFwMgr GetFireWallManager()
{
Type objectType = Type.GetTypeFromCLSID(new Guid(firewallGuid));
return Activator.CreateInstance(objectType) as INetFwMgr;
}
Run Code Online (Sandbox Code Playgroud)
然后问题变成:如何查找非Windows防火墙的状态?如果防火墙已正确集成,上面的检查工作是否相同,或者有更好的方法吗?我查过这篇文章:C#Windows安全中心设置和这篇文章:C# - 如果启用了外部防火墙,如何chceck?但两者都证明相对无益.
我一直在研究WMI API,但到目前为止它非常令人困惑,而且通过MSDN的文档并不是很有希望.我也尝试过使用SelectQuery,但到目前为止我还没有成功.任何人都可以帮助我在新的起点或我可以找到更好的有关第三方防火墙的文档/说明吗?
编辑:目前我正在进一步探索WMI,特别FirewallProduct是帖子建议的类.
更新2:我一直在测试以下代码段:
string wmiNameSpace = "SecurityCenter2";
ManagementScope scope;
scope = new ManagementScope(String.Format("\\\\{0}\\root\\{1}", "localhost", wmiNameSpace), null);
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM FirewallProduct"); …Run Code Online (Sandbox Code Playgroud)