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

把写代码过程中常用的一些代码片段备份一次,下面代码是关于C#列出所有物理网络适配器的代码,应该对大家有用。

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;

public static string nsrootwmi = computer + "root\WMI";

public static string nsrootcimv2 = computer + "root\CIMV2";

public static ManagementObjectCollection wmi1 = searcher1.Get( );

public static ManagementObjectCollection wmi2 = searcher2.Get( );

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

if ( args.Length > 2 )

{

return WriteError( "Invalid command line arguments" );

}

if ( args.Length > 0 )

{

foreach ( string arg in args )

{

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

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" );

return 1;

}

#endregion Error handling

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分享给大家一个很久之前写的一个纯C#控制台 3D闯关游戏代码 直接复制就可以用 初学者可以看看 学习一下编程思想还...
    Magic_Dong阅读 9,764评论 3 0
  • 将内容过程中比较重要的一些内容记录起来,下边内容是关于C# 读取和设置大小写切换键状态的内容,希望能对各朋友有所用...
    xintiantian阅读 4,260评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,800评论 19 139
  • 一年前的今天,遇见了简书,从此开启了一段奇妙的旅程,直到今天,还会到更遥远的明天。 有了简书,不再把所有的时间都用...
    沙鸥_f44c阅读 3,790评论 4 14
  • 我家的苹果树结果那天 花店的小猫丢了。 我们在花店门前打闹时 总是冲我们大吼的爷爷 这时候呜呜的大哭。 那天,在家...
    麦田辰阅读 877评论 0 2