C# 安装期间创建防火墙规则:netsh还是WindowsFirewall API?
我正在为我们的程序构建一个安装程序,我想在安装时添加一个防火墙规则。 我做了一些研究,发现了两种方法:C# 安装期间创建防火墙规则:netsh还是WindowsFirewall API?,c#,windows,installation,windows-firewall,C#,Windows,Installation,Windows Firewall,我正在为我们的程序构建一个安装程序,我想在安装时添加一个防火墙规则。 我做了一些研究,发现了两种方法: 运行netsh命令 使用防火墙API编程 关于netsh,有两种类型的命令- “netsh防火墙添加允许的程序C:\MyApp\MyApp.exe”我的 应用程序“启用” 及- “netsh advfirewall firewall add rule name=“我的应用程序”dir=in action=allow program=“C:\MyApp\MyApp.exe”enable=yes
- “netsh防火墙添加允许的程序C:\MyApp\MyApp.exe”我的 应用程序“启用” 及-
- “netsh advfirewall firewall add rule name=“我的应用程序”dir=in action=allow program=“C:\MyApp\MyApp.exe”enable=yes”
关于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