我有这个有效的查询
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()
不起作用。
任何想法?
答案 0 :(得分:0)
我很笨,很容易,只需要在字符串中添加替换。
ManagementObject pnpdevice = new ManagementObjectSearcher(String.Format(
"select * from Win32_PnPEntity where DeviceID='{0}'",
@device["DeviceID"].ToString().Replace("\\", "\\\\") )).First();