如何根据SCSI的设备ID字符串将驱动器号添加到组合框中



根据我的查询,当安装了虚拟驱动器时,如何找到真正的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
            }
        }

感谢大家的帮助,干杯。

您需要

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

这就是向组合框中添加对象的方式。

相关内容

  • 没有找到相关文章

最新更新