C#Process.GetProcessById(4)抛出System.ComponentModel.Win32Exception

时间:2012-05-28 10:23:34

标签: c# .net exception process module

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

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

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

2 个答案:

答案 0 :(得分:3)

System“进程”(在Windows计算机上使用PID 4)实际上不是一个进程,它表示一组具有SYSTEM完整性的进程。

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

答案 1 :(得分:2)

系统进程不是真正的用户模式进程,而是Windows内核(需要更好的描述)。因此,不能将其视为正常过程。