How to get Drive Letter and Name (volume label)
Asked Answered
S

2

15

I have a program that tells me all the hard disks/ usb's, but it only tells me the drive letter not the name. Here is what I have:

DriveInfo[] drives = DriveInfo.GetDrives();
Console.WriteLine("Detected Drives: ");
for(int i = 0; i < drives.Count(); i++)
{
     Console.WriteLine("Drive " + i + ": " + drives[i].Name);
}

return drives;

and this prints:

Drive 0: C:\
Drive 1: E:\

but I want the name such as

Drive 0: C:\ Local disk
Drive 1: E:\ Kingston USB

how do I get this?

Stamper answered 4/10, 2013 at 15:57 Comment(1)
@Saravana, the linked question doesn't have an accepted answer, also the highest voted one might not be a good suit for OPAviation
J
20

You are looking for the VolumeLabel property:

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.volumelabel.aspx

Example:

Console.WriteLine(drives[i].VolumeLabel);
Jevon answered 4/10, 2013 at 15:59 Comment(2)
+1. As it answers the question as asked, also most likely it is not what OP is looking for (expected output seem to be looking for physical drive information, partially covered by DriveInfo.DriveType )Alric
you can use GetVolumeInformationA() to obtain drive names from drive letters. For examples you can look at this codetwee.blogspot.com/2020/05/…Squishy
S
10

Try this

 try
        {
            DriveInfo[] myDrives = DriveInfo.GetDrives();

            foreach (DriveInfo drive in myDrives)
            {
                Console.WriteLine("Drive:" + drive.Name);
                Console.WriteLine("Drive Type:" + drive.DriveType);

                if (drive.IsReady == true)
                {
                    Console.WriteLine("Vol Label:" + drive.VolumeLabel);
                    Console.WriteLine("File System: " + drive.DriveFormat);

                }
            }
        }
        catch (Exception)
        {

            throw;
        }
Stellate answered 4/10, 2013 at 16:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.