Search code examples
network-programmingwindows-7routesnat

Enable Internet Connection Sharing programmatically


I can do it manually by right-clicking on a network connection, opening the Sharing tab, clicking on the "Allow other network users to connect through this computer's Internet connection" check box, and selecting a "Home networking connection".

While poking around this problem I have found multiple sets of COM interfaces:

1) Internet Connection Sharing and Internet Connection Firewall Interfaces with INetSharingManager

Its documentation says:

Internet Connection Firewall may be altered or unavailable in subsequent versions. Instead, use the Windows Firewall API.

Moreover, the INetSharingConfiguration.EnableSharing method does not look like it corresponds the procedure described above because its arguments don't include the "Home networking connection".

2) Windows Firewall for Windows XP with SP2 Interfaces

Its documentation references us further:

For Windows Vista and later, use of the Windows Firewall with Advanced Security API is recommended.

3) Windows Firewall with Advanced Security API

There are only the following interfaces: INetFwPolicy2, INetFwProduct, INetFwProducts, INetFwRule, INetFwRule2, INetFwRule3, INetFwRules, INetFwServiceRestriction. Does not look very promising.

Now I'm lost. Which API should I use on Windows 7?


Solution

  • utapyngo

    Which is your final choice?

    http://social.msdn.microsoft.com/Forums/en-tw/windowssdk/thread/19f7581d-29c7-4109-85d4-6a79ee4d1577

    "I was able to find the solution. You have to enable the public interface on the adapter you are connecting to and enable sharing on the private interface for the adapter you want to be able to use for the network."