Any way to turn the “internet off” in windows using c#?

前端 未结 5 1321
误落风尘
误落风尘 2020-11-28 05:17

I am looking for pointers towards APIs in c# that will allow me to control my Internet connection by turning the connection on and off.

I want to write a little con

5条回答
  •  执笔经年
    2020-11-28 05:29

    Here's a sample program that does it using WMI management objects.

    In the example, I'm targeting my wireless adapter by looking for network adapters that have "Wireless" in their name. You could figure out some substring that identifies the name of the adapter that you are targeting (you can get the names by doing ipconfig /all at a command line). Not passing a substring would cause this to go through all adapters, which is kinda severe. You'll need to add a reference to System.Management to your project.

    using System;
    using System.Management;
    
    namespace ConsoleAdapterEnabler
    {
        public static class NetworkAdapterEnabler
        {
            public static ManagementObjectSearcher GetWMINetworkAdapters(String filterExpression = "")
            {
                String queryString = "SELECT * FROM Win32_NetworkAdapter";
                if (filterExpression.Length > 0)
                {
                    queryString += String.Format(" WHERE Name LIKE '%{0}%' ", filterExpression);
                }
                WqlObjectQuery query = new WqlObjectQuery(queryString);
                ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher(query);
                return objectSearcher;
            }
    
            public static void EnableWMINetworkAdapters(String filterExpression = "")
            {
                foreach (ManagementObject adapter in GetWMINetworkAdapters(filterExpression).Get())
                {
                    //only enable if not already enabled
                    if (((bool)adapter.Properties["NetEnabled"].Value) != true)
                    {
                        adapter.InvokeMethod("Enable", null);
                    }
                }
            }
    
            public static void DisableWMINetworkAdapters(String filterExpression = "")
            {
                foreach (ManagementObject adapter in GetWMINetworkAdapters(filterExpression).Get())
                {
                    //If enabled, then disable
                    if (((bool)adapter.Properties["NetEnabled"].Value)==true)
                    {
                        adapter.InvokeMethod("Disable", null);
                    }
                }
            }
    
        }
        class Program
        {
            public static int Main(string[] args)
            {
                NetworkAdapterEnabler.DisableWMINetworkAdapters("Wireless");
    
                Console.WriteLine("Press any key to continue");
                var key = Console.ReadKey();
    
                NetworkAdapterEnabler.EnableWMINetworkAdapters("Wireless");
    
                Console.WriteLine("Press any key to continue");
                key = Console.ReadKey();
                return 0;
            }
        }
    }
    

提交回复
热议问题