C# 按执行路径获取进程

C# 按执行路径获取进程,c#,process,C#,Process,下面是一个方法,该方法必须按可执行文件的路径返回进程。 但当我尝试调用此方法时,出现了一个异常Win32Exception“访问被拒绝”。 那么如何正确地做呢 private static List<Process> GetProcessByFilename(string filename) { List<Process> processes = new List<Process>(); for

下面是一个方法,该方法必须按可执行文件的路径返回进程。 但当我尝试调用此方法时,出现了一个异常Win32Exception“访问被拒绝”。 那么如何正确地做呢

private static List<Process> GetProcessByFilename(string filename)
        {
            List<Process> processes = new List<Process>();

            foreach (var process in Process.GetProcesses())
            {
                if (process.MainModule.FileName == filename)
                {
                    processes.Add(process);
                }
            }
            return processes;
        }
私有静态列表GetProcessByFilename(字符串文件名)
{
列表进程=新列表();
foreach(var process in process.getprocesss())
{
if(process.MainModule.FileName==文件名)
{
流程。添加(流程);
}
}
返回过程;
}

在尝试获取核心系统进程的
MainModule
时,您将获得
Win32Exception
(请参阅)。您应该处理这个问题。

正如消息所说,您有“访问被拒绝”的问题。您的Windows凭据可能没有进行所需Win32调用所需的权限

此异常到底在哪里引发?首先,不允许您查询所有Win32进程路径,有些进程没有路径,最后,您可能在运行时没有足够的访问权限

要知道哪种情况适用于您的案例,我需要知道在代码路径中的何处出现异常,以及哪个进程(如果不是全部)引发异常