1
我正在玩弄WMI。我試圖修改下面的代碼來修復一個錯誤,即它最初由模型查詢。如果您有兩個具有相同型號的驅動器,則它只會返回第一個磁盤的\\。\ PHYSICALDEVICE。相反,我現在向用戶展示\\ PHYSICALDEVICE:MODEL字符串。他們從下拉列表中選擇此項,我解析出物理設備並將其用於查詢。Win32_DiskDrive上無效的WQL查詢
除了我不斷收到一個錯誤「無效查詢」的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();
}
}
謝謝。你讓我走在正確的道路上(我認爲)。設備變量已經被定義爲'\\\\。\\ PHYSICALDEVICE0'。我是否需要添加更多文字反斜槓? – 2011-06-15 14:47:58
是的 - var需要傳遞給查詢爲'\\\\\\\\。\\\\ PHYSICALDEVICE0'。瘋狂。謝謝。 – 2011-06-15 14:56:26
@DavidM:瘋狂+1。這是相當古老的,但仍然。你可以部分返回到以@:@「\\\\。\\ PHYSICALDEVICE0」作爲前綴的前綴。 – raven 2013-03-19 12:28:37