如何构建WMI查询

12

我想要查找名字以param1开头并以param2结尾的结果,但我的代码没有起作用。

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

运作良好


你能提供一小部分你期望的内容吗?这只是返回一个空集合吗? - IAbstract
以param1开头且以param2结尾的进程集合。然后获取它们的ID。 - Saint
2个回答

17

试试这个:

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


10

@Chad 哈哈,你为什么讨厌它? - Jordan Rieger
2
@JordanRieger 那是3年前的事了,老实说我不记得了...但我肯定有充分的理由! - Chad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接