加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#列出所有物理网络适配器

发布时间:2020-12-15 17:56:32 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Management;using System.Text; namespac

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;
 
namespace RobvanderWoude
{
    class ListNICs
    {
        public static ArrayList nics = new ArrayList( );
        public static string computer = string.Empty;
 
        // Use global variables,so we only need to run the WMI queries once
        public static string nsrootwmi = computer + "rootWMI";
        public static string nsrootcimv2 = computer + "rootCIMV2";
        public static ManagementObjectSearcher searcher1 = new ManagementObjectSearcher( nsrootwmi,"SELECT * FROM MSNdis_PhysicalMediumType" );
        public static ManagementObjectCollection wmi1 = searcher1.Get( );
        public static ManagementObjectSearcher searcher2 = new ManagementObjectSearcher( nsrootcimv2,"SELECT * FROM Win32_NetworkAdapter" );
        public static ManagementObjectCollection wmi2 = searcher2.Get( );
        public static ManagementObjectSearcher searcher3 = new ManagementObjectSearcher( nsrootwmi,"SELECT * FROM MSNdis_LinkSpeed" );
        public static ManagementObjectCollection wmi3 = searcher3.Get( );
 
 
        static int Main( string[] args )
        {
            try
            {
                bool listBluetooth = true;
                bool listWired = true;
                bool listWireless = true;
 
 
                #region Command line parsing
 
 
                // Only 2 optional argument allowed: remote computer name and/or adapter type
                if ( args.Length > 2 )
                {
                    return WriteError( "Invalid command line arguments" );
                }
                if ( args.Length > 0 )
                {
                    foreach ( string arg in args )
                    {
                        // We'll display a 'friendly' message if help was requested
                        if ( arg.StartsWith( "/" ) || arg.StartsWith( "-" ) )
                        {
                            switch ( arg.ToUpper( ) )
                            {
                                case "/?":
                                case "-?":
                                    return WriteError( string.Empty );
                                case "/B":
                                case "/BLUETOOTH":
                                    if ( ( listBluetooth && listWired && listWireless ) == false )
                                    {
                                        return WriteError( "Select a single adapter type only,or omit type to select all" );
                                    }
                                    listWired = false;
                                    listWireless = false;
                                    break;
                                case "/W":
                                case "/WIRED":
                                    if ( ( listBluetooth && listWired && listWireless ) == false )
                                    {
                                        return WriteError( "Select a single adapter type only,or omit type to select all" );
                                    }
                                    listBluetooth = false;
                                    listWireless = false;
                                    break;
                                case "/WL":
                                case "/WIFI":
                                case "/WIRELESS":
                                    if ( ( listBluetooth && listWired && listWireless ) == false )
                                    {
                                        return WriteError( "Select a single adapter type only,or omit type to select all" );
                                    }
                                    listBluetooth = false;
                                    listWired = false;
                                    break;
                                default:
                                    return WriteError( "Invalid command line argument" );
                            }
                        }
                        else
                        {
                            if ( !string.IsNullOrEmpty( computer ) )
                            {
                                return WriteError( "Do not specify more than one computer name" );
                            }
                            computer = "\" + arg + "";
                        }
 
                    }
                }
 
 
                #endregion Command line parsing
 
 
                foreach ( ManagementObject queryObj1 in wmi1 )
                {
                    if ( queryObj1["NdisPhysicalMediumType"].ToString( ) == "10" )
                    {
                        if ( listBluetooth )
                        {
                            AddAdapter( queryObj1["InstanceName"].ToString( ),"Bluetooth" );
                        }
                    }
                    if ( queryObj1["NdisPhysicalMediumType"].ToString( ) == "0" )
                    {
                        if ( listWired )
                        {
                            AddAdapter( queryObj1["InstanceName"].ToString( ),"Wired" );
                        }
                    }
                    if ( queryObj1["NdisPhysicalMediumType"].ToString( ) == "1" )
                    {
                        if ( listWireless )
                        {
                            AddAdapter( queryObj1["InstanceName"].ToString( ),"Wireless" );
                        }
                    }
                }
 
                nics.Sort( );
 
                foreach ( string nic in nics )
                {
                    Console.WriteLine( nic );
                }
 
 
                return 0;
            }
            catch ( Exception e )
            {
                return WriteError( e );
            }
        }
 
 
        public static void AddAdapter( string name,string type )
        {
            foreach ( ManagementObject queryObj2 in wmi2 )
            {
                if ( ( queryObj2["Name"].ToString( ) == name ) && Convert.ToBoolean( queryObj2["PhysicalAdapter"] ) )
                {
                    foreach ( ManagementObject queryObj3 in wmi3 )
                    {
                        if ( queryObj3["InstanceName"].ToString( ) == name )
                        {
                            nics.Add( String.Format( "{0,6}",Convert.ToInt32( queryObj3["NdisLinkSpeed"] ) / 10000 ) + " Mb/st" + String.Format( "{0,-11}","[" + type + "]" ) + "t" + name );
                        }
                    }
                }
            }
        }
 
 
        #region Error handling
 
 
        public static int WriteError( Exception e )
        {
            return WriteError( e == null ? null : e.Message );
        }
 
 
        public static int WriteError( string errorMessage )
        {
            /*
            ListNICs,Version 1.00
            List physical network adapters on the specified computer
 
            Usage:  LISTNICS  [ computername ]  [ /Bluetooth | /Wired | /WireLess ]
 
            Where:  "computername"    is a remote computer name    (default: this computer)
                    /Bluetooth or /B  list Bluetooth adapters only (default: all)
                    /Wired     or /W  list wired adapters only     (default: all)
                    /Wireless  or /WL list wireless adapters only  (default: all)
 
            Written by Rob van der Woude
            http://www.robvanderwoude.com
            */
 
            if ( string.IsNullOrEmpty( errorMessage ) == false )
            {
                Console.Error.WriteLine( );
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Error.Write( "ERROR:  " );
                Console.ForegroundColor = ConsoleColor.White;
                Console.Error.WriteLine( errorMessage );
                Console.ResetColor( );
            }
            Console.Error.WriteLine( );
            Console.Error.WriteLine( "ListNICs,Version 1.00" );
            Console.Error.WriteLine( "List physical network adapters on the specified computer" );
            Console.Error.WriteLine( );
            Console.Error.Write( "Usage:  " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "LISTNICS" );
            Console.ResetColor( );
            Console.Error.Write( "  [ computername ]  [ " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/B" );
            Console.ResetColor( );
            Console.Error.Write( "luetooth | " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/W" );
            Console.ResetColor( );
            Console.Error.Write( "ired | " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/W" );
            Console.ResetColor( );
            Console.Error.Write( "ire" );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "L" );
            Console.ResetColor( );
            Console.Error.WriteLine( "ess ]" );
            Console.Error.WriteLine( );
            Console.Error.WriteLine( "Where:  "computername"    is a remote computer name    (default: this computer)" );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "        /B" );
            Console.ResetColor( );
            Console.Error.Write( "luetooth or " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/B" );
            Console.ResetColor( );
            Console.Error.WriteLine( "  list Bluetooth adapters only (default: all)" );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "        /W" );
            Console.ResetColor( );
            Console.Error.Write( "ired     or " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/W" );
            Console.ResetColor( );
            Console.Error.WriteLine( "  list wired adapters only     (default: all)" );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "        /W" );
            Console.ResetColor( );
            Console.Error.Write( "ire" );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "L" );
            Console.ResetColor( );
            Console.Error.Write( "ess  or " );
            Console.ForegroundColor = ConsoleColor.White;
            Console.Error.Write( "/WL" );
            Console.ResetColor( );
            Console.Error.WriteLine( " list wireless adapters only  (default: all)" );
            Console.Error.WriteLine( );
            Console.Error.WriteLine( "Written by Rob van der Woude" );
            Console.Error.WriteLine( "http://www.robvanderwoude.com" );
            return 1;
        }
 
 
        #endregion Error handling
    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读