C#获取驱动器盘符

 一、使用ManagementObjectSearcher类

        static void Main(string[] args)
        {
            SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
            foreach (ManagementObject disk in searcher.Get())
            {
                //获取驱动器盘符
                Console.WriteLine(disk["Name"].ToString());
                //卷标
                Console.WriteLine(disk["VolumeName"].ToString());
                //驱动器类型
                string DriveType = disk["DriveType"].ToString();
                switch (DriveType)
                {
                    case "0":
                        Console.WriteLine("未知设备");
                        break;
                    case "1":
                        Console.WriteLine("未分区");
                        break;
                    case "2":
                        Console.WriteLine("可移动磁盘");
                        break;
                    case "3":
                        Console.WriteLine("硬盘");
                        break;
                    case "4":
                        Console.WriteLine("网络驱动器");
                        break;
                    case "5":
                        Console.WriteLine("光驱");
                        break;
                    case "6":
                        Console.WriteLine("内存磁盘");
                        break;
                }
                //容量
                Console.WriteLine(GetSizeUseUnit(disk["Size"].ToString()));
                //剩余空间
                Console.WriteLine(GetSizeUseUnit(disk["FreeSpace"].ToString()));
            }
        }

        public static string GetSizeUseUnit(string size)
        {
            double dSpace = Convert.ToDouble(size);
            string sSpace = dSpace.ToString("N");
            string[] tmp;
            string rtnSize = "0";
            tmp = sSpace.Split(',');
            switch (tmp.GetUpperBound(0))
            {
                case 0:
                    rtnSize = tmp[0] + " 字节";
                    break;
                case 1:
                    rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " K";
                    break;
                case 2:
                    rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " M";
                    break;
                case 3:
                    rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " G";
                    break;
                case 4:
                    rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " T";
                    break;
            }
            return rtnSize;
        }

二、使用DriveInfo类

        static void Main(string[] args)
        {
            DriveInfo[] allDrives = DriveInfo.GetDrives();
            foreach (DriveInfo d in allDrives)
            {
                Console.WriteLine("Drive {0}", d.Name);
                Console.WriteLine("  File type: {0}", d.DriveType);
                if (d.IsReady == true)
                {
                    Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                    Console.WriteLine("  File system: {0}", d.DriveFormat);
                    Console.WriteLine(
                        "  Available space to current user:{0, 15} bytes",
                        d.AvailableFreeSpace);

                    Console.WriteLine(
                        "  Total available space:          {0, 15} bytes",
                        d.TotalFreeSpace);

                    Console.WriteLine(
                        "  Total size of drive:            {0, 15} bytes ",
                        d.TotalSize);
                }
            }
        }

三、使用Environment类,调用kernel32API获取驱动类型

        [DllImport("kernel32")]
        public static extern uint GetDriveType(string lpRootPathName);

        static void Main(string[] args)
        {
            string[] drives = Environment.GetLogicalDrives();
            foreach (string drive in drives)
            {
                //Determine icon to display by drive
                switch (GetDriveType(drive))
                {
                    case 2:
                        Console.WriteLine("软盘");
                        break;
                    case 3:
                        Console.WriteLine("硬盘");
                        break;
                    case 4:
                        Console.WriteLine("网络驱动器");
                        break;
                    case 5:
                        Console.WriteLine("光驱驱动器");
                        break;
                    default:
                        Console.WriteLine("");
                        break;
                }
            }
        }
原文地址:https://www.cnblogs.com/lusunqing/p/3150775.html