对字符串变量WMI转义字符编程

问题描述:

我有这方面的工作查询对字符串变量WMI转义字符编程

ManagementObject pnpdevice = new ManagementObjectSearcher(String.Format(
"select * from Win32_PnPEntity where DeviceID='{0}'", 
"USB\\\\VID_046D&PID_C52B&MI_00\\\\6&48E0D58&0&0000")).First(); 

这里我才意识到,我需要使用四斜线一个斜线:两人在C#中逃脱,两个WMI逃跑。

我的问题是如何以编程方式而不是手动执行此操作。通常我当然会使用字符串逃脱前面的@,所以这个作品,以及:

ManagementObject pnpdevice = new ManagementObjectSearcher(String.Format(
"select * from Win32_PnPEntity where DeviceID='{0}'", 
@"USB\\VID_046D&PID_C52B&MI_00\\6&48E0D58&0&0000")).First(); 

,但我怎么做,与一个字符串变量?

ManagementObject pnpdevice = new ManagementObjectSearcher(String.Format(
"select * from Win32_PnPEntity where DeviceID='{0}'", 
device["DeviceID"].ToString())).First(); 

这没有我需要的任何转义,并且作为无效查询失败。写它@device["DeviceID"].ToString()不起作用。

有什么想法?

我很笨,这很容易,只需要添加一个替换字符串。

ManagementObject pnpdevice = new ManagementObjectSearcher(String.Format(
    "select * from Win32_PnPEntity where DeviceID='{0}'", 
    @device["DeviceID"].ToString().Replace("\\", "\\\\"))).First(); 
+0

只是FYI,这是行不通的。 'ManagementObjectSearcher'不是一个集合,也不会继承'IEnumberable',所以你不能调用First()。 –