0

这是我的查询代码:

public String getDriveID()
{
    String wow = @"win32_logicaldisk.deviceid=\" + @driveID;

    ManagementObject disk = new ManagementObject(wow);
    disk.Get();
    Console.WriteLine(disk["Name"]);
    return disk["Name"].ToString();
}

这就是创建该driveID方法使用的 String 的原因:

DriveInfo dInfo = therehasgottobeanotherway[driveList.SelectedIndex];

if (dInfo.IsReady) {
    diskWMI dwmi = new diskWMI(dInfo.Name);
}

如果对DriveInfo类不熟悉,该Name属性返回驱动器的名称,例如c:\

我在网上找到了这段代码,它与我正在尝试做的事情完全相同,但是当我尝试使用它时总是会出错:

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
Console.WriteLine(disk["VolumeName"]);
Console.ReadLine();

我敢打赌会发生格式错误,但我不知道要更改什么。

我正在尝试传入一个驱动器名称deviceid=

4

3 回答 3

1
public string GetHDDSerialNumber(string drive)
{
    //check to see if the user provided a drive letter
    //if not default it to "C"
    if (drive == "" || drive == null)
    {
        drive = "C";
    }
    //create our ManagementObject, passing it the drive letter to the
    //DevideID using WQL
    ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    //bind our management object
    disk.Get();
    //return the serial number
    return disk["VolumeSerialNumber"].ToString();
}

或者对于您现有的示例,这对您有用

String drive = "c";
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
disk.Get();
Console.WriteLine(disk["VolumeName"]);
Console.ReadLine();
于 2012-09-19T21:56:37.037 回答
0

不是一个真正的答案,但我可以确认我接受了您的代码并运行了以下代码,对我来说效果很好:

namespace ConsoleApplication1
{
    using System;
    using System.Management;

    class Program
    {
        static void Main(string[] args)
        {
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
            disk.Get();
            Console.WriteLine(disk["VolumeName"]);
            Console.ReadLine();
        }
    }
}

它在控制台窗口中显示名称失败。

于 2012-09-19T20:41:51.310 回答
0

从 deviceId 中删除反斜杠,它应该可以工作。您提到的链接有一个反斜杠 :String drive = @"C:\"; =>字符串驱动 = @"C:" ;

于 2012-09-19T22:25:18.793 回答