我在这里为我们的程序构建一个安装程序,我想在安装时添加防火墙规则。 我研究了一下,发现了两种方法:
- 运行 netsh 命令
- 以编程方式使用防火墙 API
关于 netsh- 记录了 2 种类型的命令-
"netsh firewall add allowedprogram C:\MyApp\MyApp.exe "My 应用程序“启用”,
和-
"netsh advfirewall 防火墙添加规则名称="我的应用程序"dir=in action=allow program="C:\MyApp\MyApp.exe"enable=yes"
..哪个操作系统支持哪个?我想我可以同时运行两者以确保 (我想支持xp,vista和win7)
关于 firewallAPI - 使用它有什么好处吗?表面上看起来有点复杂(对于初学者,我需要找出我正在运行的操作系统,因为我需要连接到 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
请记住,这些是用旧的 COM 对象为 XP SP2 编写的; Microsoft 建议您使用的位置:INetFwPolicy2。它适用于 Vista、7 和 8。这里有一些文档,包括文章和几个使用旧代码的示例;不知道这是否有帮助。希望如此。
关于c# - 安装期间创建防火墙规则 : netsh or WindowsFirewall API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699187/