На основе моего запроса Как найти истинную букву привода компакт-дисков, если также установлен виртуальный привод?
И предложение, которое я получил здесь Как определить, является ли диск виртуальный или физический
Я хотел бы просто заполнить поле со списком букв виртуального диска, когда строка 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);
Однако это не работает, я просто получаю исключение Invalid Operation Exception.
Я пытаюсь сделать это
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
}
}
Оцените некоторую помощь - ура.