在安装期间创建防火墙规则:netsh 或 WindowsFirewall API

本文关键字:netsh WindowsFirewall API 规则 防火墙 安装 创建 | 更新日期: 2023-09-27 18:35:00

我正在为我们的程序构建安装程序,我想在安装时添加防火墙规则。我做了一些研究,发现了两种方法:

  1. 运行 netsh 命令
  2. 以编程方式使用防火墙 API

关于netsh-记录了2种类型的命令-

  • "netsh firewall add allowedprogram C:''MyApp''MyApp.exe "My应用程序"启用",

    和-

  • "netsh advfirewall firewall add rules name="My Application" dir=inaction=allow program="C:''MyApp''MyApp.exe" enable=yes">

..哪些操作系统支持哪些操作系统?我想我可以同时运行两者以确保(我想支持xp,vista和win7(

关于防火墙API-使用它有什么好处吗?从表面上看似乎有点复杂(我需要找出我运行的操作系统,因为我需要在vista中连接到不同的dll(。

在安装期间创建防火墙规则:netsh 或 WindowsFirewall API

如果您只是检查防火墙是否已启用; 您可以执行以下操作:

NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false);
INetFwMgr Manage = (INetFwMgr)Activator.CreateInstance(NetFwMgrType);
bool Firewallenabled = Manage.LocalPolicy.CurrentProfile.FirewallEnabled;

然后,您可以将应用程序添加到授权应用程序中;

INetFwAuthorizedApplications applications;
INetFwAuthorizedApplication application;
// Input Application Name
application.Name = “Internet Explorer”;
// Locate .exe
 application.ProcessImageFileName = "C:''Program Files''Internet Explorer''iexplore.exe"
// Enable
application.Enabled =  true; 
// Authorize the Application
Type NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false); 
         INetFwMgr Manage = (INetFwMgr)Activator.CreateInstance(NetFwMgrType); 
         applications = (INetFwAuthorizedApplications)mgr.LocalPolicy.CurrentProfile.AuthorizedApplications;
applications.Add(application);

你将需要访问以下 COM 对象:

  • NetFwTypeLib
  • HNetCfg.FwMgr

请记住,这些是使用 XP SP2 的旧 COM 对象编写的;Microsoft建议使用:INetFwPolicy2。它将适用于 Vista、7 和 8。 下面是一些文档,包括文章,其中包含使用旧代码的几个示例;不知道这是否有帮助。 希望如此。

远景, 7, 8

XP 服务包 2:

详细包含这些示例的博客;和解释。