C# Process.GetProcessById(4) throws System.ComponentModel.Wi

本文关键字:throws System ComponentModel Wi Process GetProcessById | 更新日期: 2023-09-27 18:35:28

我正在编写一段代码,借此我将遍历系统进程加载的模块列表(PID:4)。 以下是我用来实现它的代码。

Process process = Process.GetProcessById(4);
foreach (ProcessModule pMod in process.Modules)
{
    Console.Write(pMod.FileName + "   ");
}
Console.WriteLine();

每当尝试评估模块列表时,此代码都会引发 System.ComponentModel.Win32Exception 错误。实际上,任何属性读取或方法调用都会引发相同的错误。任何其他进程都工作正常,并且能够正确列出所有模块。任何人都可以阐明可能导致这种行为的原因。

C# Process.GetProcessById(4) throws System.ComponentModel.Wi

System"

进程"(在Windows机器上使用PID 4)实际上根本不是一个进程,它表示一组具有系统完整性的进程。

尝试使用实际进程 PID(例如,运行 Internet Explorer,并使用它的 PID),看看你是否会得到异常。

系统进程不是真正的用户模式进程,它是Windows内核(因为缺乏更好的描述)。因此,不能将其视为正常过程进行检查。