Introduction
With the release of Windows XP's Service Pack 2, Microsoft's Internet Connection Sharing (ICS) and Internet Connection Firewall (ICF) features quickly obtained a large degree of notoriety. Many developers have been actively looking for ways to easily "peek and poke" at the ICS & ICF configurations on a given machine.
The good news is that Microsoft released the interfaces with a COM wrapper. The bad news is that it isn't well advertised and it's not very intuitive to use. Getting a full set of details on a particular connection's configuration can require several method calls.
Overview
This project contains a strongly-typed collection named NetworkConnectionCollection
. When you create an instance of this collection, it automatically uses the ICS/ICF COM interfaces to iterate all of the Network Connections on the local machine and create NetworkConnection
objects (as members of the NetworkConnectionCollection
).
The NetworkConnection
class impliments three ICS/ICF interfaces: INetConnection
, INetConnectionProps
and INetSharingConfiguration
. When you use the ICS/ICF COM interfaces directly, you need to reference each of these independantly. By using the NetworkConnection
class, you can access all of the members in one place.
Work Remaining
I haven't spent much time on this, since it does what I need at this point. One obvious improvement would be to overload a few of the members to expose/use native types (e.g. the INetConnectionProps.GUID
property returns a String
, but a System.Guid
would be preferable). Another improvement would be to wrap the PortMappings
.
References
Microsoft has exposed the API for the ICS & ICF in a couple of places, but this code uses the COM interface HNetCfg.HNetShare
. You can add a reference to this interface to your own projects by using the Reference Browser to select HNETCFG.DLL
(typically located in the "C:\Windows\System32\" directory).