我试图创建以查看加载过程中的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();
}
}
}
}
}
}
这是什么?如何解决这个问题?
答案 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>();
}