在安装期间创建防火墙规则:netsh 或 WindowsFirewall API
本文关键字:netsh WindowsFirewall API 规则 防火墙 安装 创建 | 更新日期: 2023-09-27 18:35:00
我正在为我们的程序构建安装程序,我想在安装时添加防火墙规则。我做了一些研究,发现了两种方法:
- 运行 netsh 命令
- 以编程方式使用防火墙 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(。
如果您只是检查防火墙是否已启用; 您可以执行以下操作:
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:
详细包含这些示例的博客;和解释。