对字符串变量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();
只是FYI,这是行不通的。 'ManagementObjectSearcher'不是一个集合,也不会继承'IEnumberable',所以你不能调用First()。 –