I got an email last week asking about how to disable a particular network connection under Vista. The specific scenario, how to disable an active 3G connection, is not something I'm going to cover, but what I present below could be used as basis for that scenario.
With Vista, Microsoft introduced two new methods to the Win32_NetworkAdapter class under WMI: Enable and Disable. Before can call either of those methods, we need to know how to enumerate the network connections.
The .NET Framework SDK provides a helpful utility called mgmtclassgen.exe, which can be used to create .NET-friendly wrappers of the WMI classes. Open up a Visual Studio command prompt and enter the following:
mgmtclassgen Win32_NetworkAdapter -p NetworkAdapter.cs
This will generate a file called NetworkAdapter.cs which will contain a C# representation of the WMI Win32_NetworkAdapter class. You can add this source code file to your C# project and then access all the properties without too much extra effort.
To filter and disable the specific adapters, you do something like this:
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.Equals("Ethernet 802.3")) { adapter.Disable(); } }
Don't forget to add a reference to System.Management.dll!