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

2018-12-03  本文已影响0人  xintiantian

把写代码过程中常用的一些代码片段备份一次,下面代码是关于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

}

}

上一篇 下一篇

猜你喜欢

热点阅读