Process MainModule -我能避免Win32异常吗?



我正在枚举进程以查找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

最新更新