0

根据我的查询,如果还安装了虚拟驱动器,如何找到真正的 CD-Rom 驱动器号?

以及我从这里得到的建议如何识别驱动器是虚拟驱动器还是物理驱动器

当 DeviceID 字符串包含 SCSI 时,我只想填充虚拟驱动器字母的组合框,我已经测试了两个虚拟驱动器,并且它们确实列出了 SCSI。

建议链接中示例答案中的前 4 个字符

string driveLetter = "G";
        ManagementObjectSearcher diskQuery = new ManagementObjectSearcher(String.Format("SELECT * FROM Win32_CDROMDrive WHERE Drive='{0}:'", driveLetter));
        ManagementObject diskResult = diskQuery.Get().OfType<ManagementObject>().SingleOrDefault();
        string deviceID = null;
        if (diskResult != null)
            deviceID = (string)diskResult["DeviceID"];
        MessageBox.Show(deviceID);

显示 SCSI,所以我想我可以做这样的事情

ManagementObjectSearcher diskQuery = new ManagementObjectSearcher(String.Format("select * from Win32_CDROMDrive Where DeviceID Like '%SCSI%'"));
        ManagementObject diskResult = diskQuery.Get().OfType<ManagementObject>().SingleOrDefault();
        string deviceID = null;
        if (diskResult != null)
            deviceID = (string)diskResult["DeviceID"];
        MessageBox.Show(deviceID);  

但是它不起作用,我只是得到一个无效的操作异常。

我想做的是这个

ComboBox cbVirtual = new ComboBox();
    var vdrives = DriveInfo.GetDrives();
    foreach (var drive in vdrives)
        if (drive.DriveType == DriveType.CDRom)
        {
            If the deviceID string contains SCSI
            {
                Fill the Combo box with the drive letter/s
            }
        }

感谢一些帮助 - 干杯。

4

1 回答 1

0

你需要

string driveLetter = "G";

ComboBox.ObjectCollection items = vdrives.Items;
Items.Add(driveLetter);

这就是您将对象添加到组合框的方式。

于 2015-02-27T11:45:44.620 回答