如何构建WMI查询WMI

2023-09-08 09:00:26 作者:姐拽的有气质

我想找到结果名称始于参数1,并用参数2结束,但我的code不起作用

I'd like to find results that Name starts with param1, and ends with param2 but my code doesn't work

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%' AND Name LIKE '%{1}'", param1, param2);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();

怎么了?

有关对比

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%'", param1);

效果很好

推荐答案

试试这个:

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%{1}'", param1, param2);

添加一些测试信息:

Adding some test info:

string wmiQuery = string.Format ( "SELECT Name, ProcessID FROM Win32_Process WHERE Name LIKE '{0}%{1}'", "wpf", ".exe" );

Console.WriteLine ( "Query: {0}", wmiQuery );

ManagementObjectSearcher searcher = new ManagementObjectSearcher ( wmiQuery );
ManagementObjectCollection retObjectCollection = searcher.Get ( );

foreach (ManagementObject retObject in retObjectCollection)
{
    Console.WriteLine ( "[{0}]\tName: {1}", retObject[ "ProcessID" ], retObject["Name"] );
}

输出:

查询:SELECT名称,从的ProcessID   Win32_Process的WHERE姓名LIKE   WPF%的.exe'   [896]产品名称:WPFFontCache_v0400.exe

Query: SELECT Name, ProcessID FROM Win32_Process WHERE Name LIKE 'wpf%.exe' [896] Name: WPFFontCache_v0400.exe