Как добавить букву диска в поле со списком на основе строки идентификатора устройства SCSI

На основе моего запроса Как найти истинную букву привода компакт-дисков, если также установлен виртуальный привод?

И предложение, которое я получил здесь Как определить, является ли диск виртуальный или физический

Я хотел бы просто заполнить поле со списком букв виртуального диска, когда строка 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
            }
        }

Оцените некоторую помощь - ура.


person Exception    schedule 27.02.2015    source источник


Ответы (1)


тебе нужно

string driveLetter = "G";

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

именно так вы добавляете объекты в поле со списком.

person Johan    schedule 27.02.2015
comment
Спасибо, Йохан, но это не то, что мне нужно. Я хочу, чтобы код подбирал диски с текстом DeviceID SCSI. Это должно быть автоматически, а не добавлением driveLetter = G; У каждого пользователя может быть своя буква диска. - person Exception; 28.02.2015