我正在枚举进程以查找excel.exe
是否正在运行(例如)。我从系统服务中获得了大量的Win32Exception
。
Process[] pps = Process.GetProcesses();
foreach (var process in pps)
{
string module = null;
try
{
module = process.MainModule?.FileName;
}
catch (Win32Exception)
{
continue;
}
使枚举运行500ms而不是10ms。
是否有一种方法来确定进程是否有主模块而不触发异常?或任何其他方式找到进程exe路径?
当您试图做操作系统不允许的事情时,会发生此异常。您可以检查NativeErrorCode
属性以查看有关异常的更多详细信息。
你可以在这里找到解决这个问题的方法。
正如@ steeve在评论中提到的,如果性能是您唯一的标准,您可以使用GetProcessByName
。