2008-12-16 69 views
4

你可以在.NET中显示读取驱动器标签或卷名的示例代码吗?我明白这需要WMI,但我不喜欢将其“下拉”到WMI中,因为它就像下降到基于字符串的SQL查询中一样,某些对象可能不存在于特定版本的操作系统或用户上可能无权查询某些数据。我很乐意相信我对WMI的看法是错误的...如何在.NET中读取“驱动器标签”或“卷名称”?

回答

12

没有WMI要求。下面将得到所有卷标:

var labels = from drive in DriveInfo.GetDrives() 
      select drive.VolumeLabel 
+1

或者只是(新的DriveInfo(“C”))。VolumeLabel – 2008-12-16 18:30:03

+0

这是正确的答案。我发现最好是获得DriveInfo实例,然后要求将VolumeLabel作为单独的语句,因为drive.VolumeLabel在“驱动器未准备好”时抛出IOException,例如空的CDROM。有关如何避免此异常的任何提示?只要吞下它? – flipdoubt 2008-12-16 20:33:03

3

呼叫DriveInfo.GetDrives获得的驱动信息的数组。然后看看DriveInfo.VolumeLabel

1

您可以使用System.IO.DriveInfo获取驱动器列表。请参阅以下示例:

注意:CDRom驱动器类型没有卷名称。

Using System.IO; 
. 
. 
. 
DriveInfo[] driveInfoList = DriveInfo.GetDrives(); 
foreach (DriveInfo drive in driveInfoList) 
{ 
    if (drive.DriveType != DriveType.CDRom) 
     textBox1.Text += String.Format("Name:{0} Volume:{1}\r\n", drive.Name, drive.VolumeLabel); 
    else 
     textBox1.Text += String.Format("Name:{0}\r\n", drive. 
} 
相关问题