根据我的查询,当安装了虚拟驱动器时,如何找到真正的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);
这就是向组合框中添加对象的方式。