问题
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();
What's wrong?
For comparision
string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%'", param1);
works well
回答1:
Try this:
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"] );
}
Output:
Query: SELECT Name, ProcessID FROM Win32_Process WHERE Name LIKE 'wpf%.exe'
[896] Name: WPFFontCache_v0400.exe
回答2:
To build WMI queries use a free tool from Microsoft known as WMI Code Creator in different programming languages VBS, VB.NET, C#
Download it from http://www.microsoft.com/downloads/en/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en
来源:https://stackoverflow.com/questions/6264453/how-to-construct-wmi-query