2011-06-07 74 views
9

我想找到的结果与名称参数1开始,以参数2结束,但我的代码不能正常工作如何构建WMI查询

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); 

作品以及

+0

你能提供你期待什么样的一个小样本?它只是返回一个空集合? – IAbstract 2011-06-07 11:34:54

+0

不为空。进程名称以param1开头并以param2结尾的进程集合。我得到然后他们的编号 – Saint 2011-06-07 11:42:30

回答

11

试试这个:

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

添加一些测试信息:

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名称,FROM的ProcessID Win32_Process的WHERE名称LIKE 'WPF%的.exe'
[896]产品名称:WPFFontCache_v0400.exe

+0

我试过了 - 不工作 – Saint 2011-06-07 11:31:36

+0

对不起,我的错误。它工作(我正在寻找没有“.exe”的名称) – Saint 2011-06-07 12:27:28

+0

@Saint_pl:无后顾之虑 - 我添加了我的测试代码片段,因为我确信它会工作......;) – IAbstract 2011-06-07 12:42:00