C#返回当前系统所有可用驱动器符号的方法

916次阅读  |  发布于5年以前

本文实例讲述了C#返回当前系统所有可用驱动器符号的方法。分享给大家供大家参考。具体如下:


    // The initial C# code for the "plain" WMI query was generated by
    // WMI Code Generator, Version 5.00, //http://www.robvanderwoude.com/wmigen.php
    using System;
    using System.Management;
    using System.Collections.Generic;
    namespace RobvanderWoude
    {
     public class ListDrives
     {
      public static int Main( string[] args )
      {
       try
       {
        string computer = string.Empty;
        #region Command line parsing
        // Only 1 optional argument allowed: a remote computer name
        if ( args.Length > 1 )
        {
         throw new Exception( "Invalid command line arguments" );
        }
        if ( args.Length == 1 )
        {
         // We'll display a 'friendly' message if help was requested
         if ( args[0].StartsWith( "/" ) || args[0].StartsWith( "-" ) )
         {
          switch ( args[0].ToUpper( ) )
          {
           case "/?":
           case "-?":
           case "/H":
           case "-H":
           case "--H":
           case "/HELP":
           case "-HELP":
           case "--HELP":
            return WriteError( string.Empty );
           default:
            return WriteError( "Invalid command line argument" );
          }
         }
         else
         {
          computer = "\\\\" + args[0] + "\\";
         }
        }
        #endregion
        string wmins = computer + "root\\CIMV2";
        ManagementObjectSearcher searcher = new ManagementObjectSearcher( wmins, "SELECT * FROM Win32_LogicalDisk" );
        List<string> drives = new List<string>( );
        foreach ( ManagementObject queryObj in searcher.Get( ) )
        {
         drives.Add( queryObj["DeviceID"].ToString( ) );
        }
        drives.Sort( );
        string drivelist = "";
        foreach ( string drive in drives )
        {
         drivelist += ( drive + " " );
        }
        Console.WriteLine( drivelist.Trim( ) );
        return 0;
       }
       catch ( Exception e )
       {
        return WriteError( e );
       }
      }
      public static int WriteError( Exception e )
      {
       return WriteError( e == null ? null : e.Message );
      }
      public static int WriteError( string errorMessage )
      { 
       string fullpath = Environment.GetCommandLineArgs( ).GetValue( 0 ).ToString( );
       string[] program = fullpath.Split( '\\' );
       string exename = program[program.GetUpperBound( 0 )];
       exename = exename.Substring( 0, exename.IndexOf( '.' ) );
       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( exename + ", Version 1.10" );
       Console.Error.WriteLine( "List all drive letters in use on the specified computer" );
       Console.Error.WriteLine( );
       Console.Error.Write( "Usage: " );
       Console.ForegroundColor = ConsoleColor.White;
       Console.Error.Write( exename.ToUpper( ) );
       Console.Error.WriteLine( " [ computername ]" );
       Console.ResetColor( );
       Console.Error.WriteLine( );
       Console.Error.WriteLine( "Where: 'computername' is the (optional) name of a remote computer" );
       Console.Error.WriteLine( " (default if not specified: local computer)" );
       Console.Error.WriteLine( );
       Console.Error.WriteLine( "Written by Rob van der Woude" );
       return 1;
      }
     }
    }

希望本文所述对大家的C#程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8