C# c ManagementObjectSearcher,用于查找带有PID的流程(及其描述)
我正在做一个程序,它应该列出我的进程,当我点击某个进程时,它应该给我它的描述 我的想法是,实际上我修改了一些类似于我在web上发现的东西,使用ManagementObjectSearcher和Win32_进程中的sql语句Select*,其中ProcessID=+a;其中a是包含进程ID的字符串变量。例如,对于某些进程,它的工作方式是Chrome、calculator,对于某些进程,它的工作方式是TsvcHost、tiltweelmouse等C# c ManagementObjectSearcher,用于查找带有PID的流程(及其描述),c#,.net,C#,.net,我正在做一个程序,它应该列出我的进程,当我点击某个进程时,它应该给我它的描述 我的想法是,实际上我修改了一些类似于我在web上发现的东西,使用ManagementObjectSearcher和Win32_进程中的sql语句Select*,其中ProcessID=+a;其中a是包含进程ID的字符串变量。例如,对于某些进程,它的工作方式是Chrome、calculator,对于某些进程,它的工作方式是TsvcHost、tiltweelmouse等 private void Lista_pro
private void Lista_procesa_prikaz_MouseClick(object sender, MouseEventArgs e)
{
string a = Lista_procesa_prikaz.Items[Lista_procesa_prikaz.FocusedItem.Index].SubItems[1].Text;
var searcher = new ManagementObjectSearcher("Select * From Win32_Process WHERE ProcessID="+a);
var proces = searcher.Get();
foreach (var process in proces)
{
var processName = process["Name"];
var processPath = process["ExecutablePath"];
if (processPath != null)
{
var fileVersionInfo = FileVersionInfo.GetVersionInfo(processPath.ToString());
var processDescription = fileVersionInfo.FileDescription;
Description_textbox.Text = processDescription.ToString();
}
}
}
如果有人能在这里发现错误我会很高兴,
谢谢你的帮助
多谢各位
编辑:部分解决了问题,如果有人关心的话,在我的情况下,平台需要设置为x64。转到Project,yourProjectName属性,build,platform target:x64我不知道它是否必须来自ManagementObjectSearcher,但我可以建议一个获得相同数据的托管类
var procs = System.Diagnostics.Process.GetProcesses()
.Where(x => x.Id == 3116);
foreach(var p in procs)
Console.WriteLine(p.ProcessName + p.Id);
如果您没有提升的权限,尝试使用这两种方法读取到的路径将抛出。至于获得这些特权,考虑一下。作为猜测,我会说,它失败的进程是作为管理员运行的。@ MaultAsHMM,可以,那么我应该如何从C中运行我的程序作为管理员来避免这些错误?null,甚至有时会弹出错误、未处理的异常