Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c ManagementObjectSearcher,用于查找带有PID的流程(及其描述)_C#_.net - Fatal编程技术网

C# c ManagementObjectSearcher,用于查找带有PID的流程(及其描述)

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

我正在做一个程序,它应该列出我的进程,当我点击某个进程时,它应该给我它的描述

我的想法是,实际上我修改了一些类似于我在web上发现的东西,使用ManagementObjectSearcher和Win32_进程中的sql语句Select*,其中ProcessID=+a;其中a是包含进程ID的字符串变量。例如,对于某些进程,它的工作方式是Chrome、calculator,对于某些进程,它的工作方式是TsvcHost、tiltweelmouse等

    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,甚至有时会弹出错误、未处理的异常