Этот код:
const string queryString = "SELECT Name, ProcessID, Caption FROM Win32_Process";
var scope = new ManagementScope(@"\root\cimv2");
var query = new ObjectQuery(queryString);
var searcher = new ManagementObjectSearcher(scope, query);
var objectCollection = searcher.Get();
foreach (var o in objectCollection)
{
Console.WriteLine("{0} {1} {2}", o["Name"], o["ProcessID"], o["Caption"]);
}
... у меня отлично работает. Как именно ваш код не работает?
(Кстати, вы ничего не делаете с options
).
Обновление:
На самом деле это жалуется, потому что вы не настроили столбцы в своем DataTable
. Я думаю, что вы слишком много сократили свой пример. Ваш DataTable
называется "Win32_Process", да? Если я назову мой "Альберт":
var table = new DataTable("Albert");
Я получаю Column 'Name' does not belong to table Albert.
Вам нужно сделать что-то вроде следующего:
var table = new DataTable("Albert");
table.Columns.Add("Name");
table.Columns.Add("ProcessID", typeof(int));
table.Columns.Add("Caption");