我正在为我们的程序构建一个安装程序,我想在安装时添加防火墙规则。 我研究了一下,我找到了两种方法:
关于netsh-记录了两种类型的命令 -
“netsh防火墙添加允许程序C:\ MyApp \ MyApp.exe”我的 申请“ENABLE”,
和 -
“netsh advfirewall防火墙添加规则名称=”我的应用程序“dir = in action = allow program =“C:\ MyApp \ MyApp.exe”enable = yes“
..哪个操作系统支持哪个?我想我可以运行两个只是为了确定 (我想支持xp,vista和win7)
关于firewallAPI-使用它有什么好处吗?表面看起来有点复杂(我需要找出我正在为启动器运行的操作系统,因为我需要在vista中连接到不同的dll。)
答案 0 :(得分:1)
如果只是检查防火墙是否已启用;你可以这样做:
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对象:
请记住,这些是用XP SP2的旧COM对象编写的; Microsoft建议您使用的地方: INetFwPolicy2 。它适用于Vista,7和8.这里有一些文档,包括使用旧代码的几个例子的文章;不知道这是否有帮助。希望它能做到。