Programmatically Enable / Disable Connection

13,385

You can achieve this in C# by leveraging WMI and the Win32_NetworkAdapter WMI class. The Win32_NetworkAdapter class has Enable and Disable methods which can be executed on a selected network interface.

An example of usage can be found here:

http://blog.opennetcf.com/ncowburn/2008/06/24/HOWTODisableEnableNetworkConnectionsProgrammaticallyUnderVista.aspx

link not available, but archived at:

http://web.archive.org/web/20120615012706/http://blog.opennetcf.com/ncowburn/2008/06/24/HOWTODisableEnableNetworkConnectionsProgrammaticallyUnderVista.aspx

Briefly, steps to do this are:

  1. Generate a wrapper for the class from VS command prompt

    mgmtclassgen Win32_NetworkAdapter /L CS -p NetworkAdapter.cs
  2. Stepping through the adapters:

    SelectQuery query = new SelectQuery("Win32_NetworkAdapter", "NetConnectionStatus=2");
    ManagementObjectSearcher search = new ManagementObjectSearcher(query);
    foreach(ManagementObject result in search.Get()) {
     NetworkAdapter adapter = new NetworkAdapter(result);
     // Identify the adapter you wish to disable here. 
     // In particular, check the AdapterType and 
     // Description properties.
     // Here, we're selecting the LAN adapters.
     if (adapter.AdapterType.Contains("Ethernet 802.3")) {
        adapter.Disable();
     }
    }

Share:
13,385
pistacchio
Author by

pistacchio

Updated on July 18, 2022

Comments

  • pistacchio
    pistacchio almost 2 years

    on Windows 7 I can enable and disable connections via the Network Connections Manager panel (in system settings).

    How can I do this programmatically in C#? Thanks