Recuperando una lista completa de procesos de Windows en C

Estoy desarrollando una biblioteca de recopilación de estadísticas de proceso simple para Windows. Estoy enumerando los procesos conEnumProcesses() función, y trato de abrirlos conOpenProcess() llamar con el indicador PROCESS_QUERY_INFORMATION. Sin embargo, este último falla para un montón de procesos del sistema. Al mismo tiempo, veo que aplicaciones similares (herramientas de sysinternals, administrador de tareas, etc.) parecen ser capaces de recuperar información sobre estos procesos incluso sin requerir privilegios de administrador. Intenté habilitar el privilegio SeDebugPrivilege, pero solo me ayudó cuando ejecuté mi programa como administrador, y aún así, no pude abrir el proceso inactivo, el proceso del sistema y el proceso audiodg (me gustaría poder recuperar su información para la consistencia también).

Entonces la pregunta es: ¿cómo puedo obtener información sobretodos Los procesos (lo veo hecho por aplicaciones de terceros, pero no veo cómo). ¿Es posible hacerlo sin privilegios de administrador?

Respuestas a la pregunta(1)

Su respuesta a la pregunta