如何忽略win32异常?模块过程

时间:2017-10-17 07:53:31

标签: c#

我试图创建以查看加载过程中的dll。但是在使用system.dll获取进程时遇到错误。它抛出错误信息:

  

System.ComponentModel.Win32Exception:'无法枚举过程模块。'

using System;
using System.Diagnostics;
using System.Threading;

namespace dll
{
    class Program
    {
        static void Main(string[] args)
        {

            Process[] processlist = Process.GetProcesses();

            foreach (Process process in processlist)
            {


                foreach (ProcessModule module in process.Modules)
                {
                    if (module.FileName.Contains("foo.dll"))
                    {
                        Console.WriteLine(module.FileName);
                        Console.ReadLine();
                    }

                }
            }
        }
    }
}
这是什么?如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这将忽略通过访问process.Modules抛出的异常。

public IEnumerable<string> GetProcessFileName(string searchBy)
{
    foreach(var process in Process.GetProcesses())
    {
        try{
            var p = process.Modules.Cast<ProcessModule>()
                .Where(m => m.FileName.Contains(searchBy))
                .Select(x => x.FileName);           
            return p;
        }
        catch(Exception e){
            //write to log
            //Console.Write(e);     
        }
    }

    return Enumerable.Empty<string>();
}