Странное поведение при WQL запросе к Win32_Process
При запросе SELECT * FROM Win32_Process возвращаются значения всех полей всех процессов.
Но при запросе SELECT ProcessID, ParentProcessID, Name, CreationDate, CommandLine FROM Win32_Process
получаю исключение System.InvalidOperationException.
Вот метод, в котором возникает исключение:
public static List<Process> GetProcesses()
{
var processes = new List<Process>();
var query = "SELECT ProcessID, ParentProcessID, Name, CreationDate, CommandLine FROM Win32_Process";
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
ManagementObjectCollection processesRaw = searcher.Get();
foreach (ManagementObject process in processesRaw)
{
try
{
process.Get(); // Здесь возникает исключение
}
catch (ManagementException)
{
continue;
}
PropertyDataCollection properties = process.Properties;
processes.Add(new Process(
(string)properties["Name"].Value,
(uint)properties["ProcessId"].Value,
(uint)properties["ParentProcessId"].Value,
properties["CommandLine"].Value is null ? "" : (string)properties["CommandLine"].Value,
WmiDateToDateTime((string)properties["CreationDate"].Value))
);
}
}
return processes;
}