Как добавить букву диска в поле со списком на основе идентификатора устройства SCSI
На основании моего запроса Как найти истинную букву дисковода 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
}
}
Ценю некоторую помощь - ура.
1 ответ
Вам нужно
string driveLetter = "G";
ComboBox.ObjectCollection items = vdrives.Items;
Items.Add(driveLetter);
вот как вы добавляете объекты в поле со списком.