以编程方式将应用程序添加到所有configuration文件Windows防火墙(Vista +)

我已经search了四周,也有类似的问题,但是,没有人会谈到如何添加exception到“所有configuration文件”(Windows 7,也就是在Vista / Windows Server 2008的任何configuration文件)。 互联网上的例子只讨论添加到当前configuration文件。

原因是我的虚拟机有一个问题:windows 2008 x86,当前的防火墙configuration文件是Domain,我的应用程序被添加到Domain的Exception列表中。 (防火墙设置为默认值:阻止任何未在例外列表中的入站呼叫。)但是,除非:1.closures该虚拟机上的防火墙,否则入站呼叫仍然被阻止。 2.手动将我的应用程序的规则configuration文件更改为“任何”

这是非常混乱,因为我认为只有活动configuration文件应该是“积极”,应该是function,无论其他configuration文件阻止我的应用程序的入站调用。

我正在使用XPSP2 INetFwMgr接口添加缺less“任何”configuration文件支持的exception。

我正在使用C#,但任何语言的例子将不胜感激。

Solutions Collecting From Web of "以编程方式将应用程序添加到所有configuration文件Windows防火墙(Vista +)"

你可以尝试这样的事情:

using System; using NetFwTypeLib; namespace FirewallManager { class Program { static void Main(string[] args) { INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")); firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW; firewallRule.Description = "Allow notepad"; firewallRule.ApplicationName = @"C:\Windows\notepad.exe"; firewallRule.Enabled = true; firewallRule.InterfaceTypes = "All"; firewallRule.Name = "Notepad"; INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance( Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); firewallPolicy.Rules.Add(firewallRule); } } } 

为了完整性,请添加对c:\ Windows \ System32 \ FirewallAPI.dll的引用