我正在为 Windows 开发一个简单的进程统计收集库。我正在使用EnumProcesses()
函数枚举进程,并尝试使用OpenProcess()
带有 PROCESS_QUERY_INFORMATION 标志的调用来打开它们。但是,后者在一堆系统进程中失败了。同时,我看到类似的应用程序(sysinternals 工具、任务管理器等)似乎能够检索有关这些进程的信息,即使不需要管理员权限。我尝试启用 SeDebugPrivilege 权限,但只有当我以管理员身份运行我的程序时它才有帮助——而且我仍然无法打开空闲进程、系统进程和 audiodg 进程(我希望能够检索他们的一致性信息)。
所以问题是:我怎样才能获得关于所有进程的信息(我看到它是由 3rd-party 应用程序完成的,但我看不到如何)?是否可以在没有管理员权限的情况下执行此操作?