如何检测防火墙产品是否已启用?

Pav*_*kat 7 c# windows-firewall windows-firewall-api windows-applications

如何启用防火墙产品,如何检测(从使用C#编写的Windows窗体应用程序)?

这是我的代码,我在INetFwMgr上遇到错误,无法找到类型或命名空间

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40D8-943A-B913C40C9CD4}"; 

       INetFwMgr manager = GetFireWallManager();
       bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled;



       private static INetFwMgr GetFireWallManager()
       {
           Type objectType = Type.GetTypeFromCLSID(new Guid(CLSID_FIREWALL_MANAGER));
           return Activator.CreateInstance(objectType) as INetFwMgr;
       }
        private void button1_Click(object sender, EventArgs e)
        {



            if (isFirewallEnabled == false)
           {
                MessageBox.Show("Firewall is not enabled.");
           }
           else
           {
                MessageBox.Show("Firewall is enabled.");
           }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gle*_*ven 2

看看这个关于防病毒的问题如何使用 WMI 或其他 C++ 中的 WMI 检测 Windows 2003 服务器和 2008 服务器 2003 服务器 R2 和 2008 服务器 R2 上安装的防病毒软件,相同的 API 调用可用于使用WSC_SECURITY_PROVIDER_FIREWALL枚举检测防火墙设置。该问题的答案实际上是错误的,但它会给您非服务器计算机的答案。该代码是用 C++ 编写的,但这只是您需要的 Windows API 调用,您也可以从 C# 调用它。