为啥 GetProcesses() 不显示所有正在运行的进程
Posted
技术标签:
【中文标题】为啥 GetProcesses() 不显示所有正在运行的进程【英文标题】:Why GetProcesses() doesn't show all of running processes为什么 GetProcesses() 不显示所有正在运行的进程 【发布时间】:2019-10-26 17:07:49 【问题描述】:当我运行以下代码时,我希望获得系统中运行的所有进程的名称,但在我以外的其他一些 PC 中,有一个正在运行的进程在 TaskManager 中可见,但我的应用程序没有显示它,我想知道我是否做错了什么或者有什么办法可以解决这个问题,顺便说一句,我的应用程序是以管理员身份运行的,所以这不是问题。感谢您的帮助。
foreach(Process Proc in Process.GetProcesses())
T += Proc.ProcessName + ", ";
【问题讨论】:
你知道那些没有被GetProcesses()列出的进程的名字吗? 您可以比较Win32_Process和Win32_Service(或ServiceController.GetServices)返回的列表或进程,看看您认为缺少的是否在其中。 【参考方案1】:可以在服务主机进程 (svchost.exe) 的同一实例中加载多个操作系统服务。 GetProcesses
不识别那些单独的服务;为此,请使用GetServices。请务必阅读official docs。
【讨论】:
【参考方案2】:Process.GetProcesses() 不返回系统进程。服务也可能显示为 svhost.exe。
【讨论】:
以上是关于为啥 GetProcesses() 不显示所有正在运行的进程的主要内容,如果未能解决你的问题,请参考以下文章
Process.GetProcesses() 占用过多的 CPU 利用率
为啥 JOptionPane 中的 JScrollPane 不显示其所有内容?