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.
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
NetworkConnection class impliments three ICS/ICF interfaces:
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.
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
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).