使用 Internet 连接共享(ICS) 和 Internet 连接防火墙(ICF) COM 接口






4.33/5 (9投票s)
NetworkConnectionCollection 是一个强类型接口,旨在简化对本机上注册的每个网络连接的互联网连接共享和互联网连接防火墙接口的访问。
引言
随着 Windows XP Service Pack 2 的发布,微软的互联网连接共享 (ICS) 和互联网连接防火墙 (ICF) 功能迅速获得了大量的关注。许多开发人员一直在积极寻找轻松“窥探和操作”给定机器上 ICS 和 ICF 配置的方法。
好消息是微软发布了带有 COM 包装器的接口。坏消息是它没有得到很好的宣传,而且使用起来不太直观。获取特定连接配置的完整细节可能需要多次方法调用。
概述
该项目包含一个名为 NetworkConnectionCollection
的强类型集合。当您创建此集合的实例时,它会自动使用 ICS/ICF COM 接口来迭代本地机器上的所有网络连接,并创建 NetworkConnection
对象(作为 NetworkConnectionCollection
的成员)。
NetworkConnection
类实现了三个 ICS/ICF 接口:INetConnection
、INetConnectionProps
和 INetSharingConfiguration
。当您直接使用 ICS/ICF COM 接口时,需要独立引用每个接口。通过使用 NetworkConnection
类,您可以将所有成员访问到一个地方。
待完成的工作
我没有花太多时间在这个项目上,因为它目前已经满足了我的需求。一个显而易见的改进是重载一些成员以暴露/使用本机类型(例如,INetConnectionProps.GUID
属性返回一个 String
,但 System.Guid
会更好)。另一个改进是包装 PortMappings
。
参考文献
微软在几个地方公开了 ICS 和 ICF 的 API,但这段代码使用了 COM 接口 HNetCfg.HNetShare
。您可以通过使用引用浏览器选择 HNETCFG.DLL
(通常位于“C:\Windows\System32\”目录中)将此接口的引用添加到您自己的项目中。