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

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

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