我正在检查防火墙.以下代码非常容易检查默认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) 我有一个应用程序通过他们的API与NetApp设备通信.启用Windows防火墙后,api命令将失败.关闭防火墙后,api命令可以正常工作.我没有收到任何消息,如"Windows防火墙阻止此程序".
仔细阅读文档,我相信我发现需要打开的TCP端口才能使api命令工作.如何以编程方式检测端口是否被阻塞,以便我可以向用户显示有关潜在问题的消息?
我有一个应用程序,我正在努力确保它在安全的环境中运行.首先,我检查Windows是否是正版,这使得用户更有可能使其保持最新状态.如果没有,我只是弹出一条消息,警告用户存在可能的风险,因为他仍然需要验证Windows.
现在,我想做更多.我还想检查用户是否安装了virusscanner.我不在乎哪一个,只要他安装了一个.然后检查是否安装了防火墙.如果可能的话,我想检查用户上次更新Windows /扫描仪/防火墙的时间,以确保它不会太旧.所以:
1)如何检查是否安装了virusscanner?
2)如何确定virusscanner何时更新?
3)如何检测virusscanner何时进行最后一次全系统检查?
4)如何检测防火墙是否已安装并处于活动状态?
5)如何检查Windows何时收到最新更新?
基本上,当我的应用程序启动时,我想显示一个带警告的屏幕(每天只有一次),以防万一这些事情都有问题.这是因为我的应用程序处理用户从其客户收集的各种敏感信息.(其中包括银行帐号,护照号码,NAW + DOB,收入等等.)基本上,如果系统出现问题,用户必须确认他已经知道这些问题.如果他继续知道他的系统可能不安全,它可能会从我的申请中承担责任......