Неверный WQL-запрос на Win32_DiskDrive - PullRequest
1 голос
/ 15 июня 2011

Я играю с WMI.Я пытаюсь изменить приведенный ниже код, чтобы исправить ошибку, а именно то, что она первоначально запрашивалась моделью.Если бы у вас было два диска с одинаковыми моделями, он вернул бы только \\. \ PHYSICALDEVICE первого диска.Вместо этого я сейчас представляю строку \\ PHYSICALDEVICE: MODEL пользователю.Они выбирают это из выпадающего списка, я разбираю физическое устройство и использую его для запроса.

За исключением того, что я продолжаю получать сообщение об ошибке "Недопустимый запрос", возвращаемый по запросу MOS

 "SELECT * FROM Win32_DiskDrive WHERE DeviceID = '" + device + "'"

На мой взгляд, запрос выглядит хорошо, но, очевидно, нет.Помощь приветствуется.

Полный код:

private void Form1_Load(object sender, EventArgs e)
    {
        //Select item from drop down menu
        ManagementObjectSearcher mosDisks = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive");

        foreach (ManagementObject moDisk in mosDisks.Get())
        {
            string devid = moDisk["Model"].ToString();
            string drvnum = moDisk["DeviceID"].ToString();

            cmbHdd.Items.Add(drvnum + ": " + devid);
        }
    }

    private void cmbHdd_SelectedIndexChanged(object sender, EventArgs e)
    {
        //update form with selected device
        int i = cmbHdd.SelectedItem.ToString().IndexOf(':');
        string device = cmbHdd.SelectedItem.ToString();//.Substring(0,i);
        ManagementObjectSearcher mosDisks = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive WHERE DeviceID = '" + device + "'");
        foreach (ManagementObject moDisk in mosDisks.Get())
        {
            lblDeviceID.Text = "DeviceID: " + moDisk["DeviceID"].ToString();
        }
    }

1 Ответ

3 голосов
/ 15 июня 2011

WMI требует удвоения обратной косой черты (\) в запросах.

Замените \ на \\ в переменной device, прежде чем вставлять его в запрос и посмотреть, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...