Recuperando uma lista completa de processos do Windows em C

Estou desenvolvendo uma biblioteca simples de coleta de estatísticas de processo para o Windows. Estou enumerando os processos comEnumProcesses() função, e eu tento abri-los comOpenProcess() chame com o sinalizador PROCESS_QUERY_INFORMATION. Este último falha por um monte de processos do sistema, no entanto. Ao mesmo tempo, vejo que aplicativos semelhantes (ferramentas sysinternals, gerenciador de tarefas, etc.) parecem conseguir recuperar informações sobre esses processos, mesmo sem precisar de privilégios de administrador. Eu tentei ativar o privilégio SeDebugPrivilege, mas ajudou apenas quando eu executei meu programa como um administrador - e ainda assim, eu não consegui abrir o processo ocioso, o processo do sistema e o processo audiodg (eu gostaria de poder recuperar o seu informação para consistência também).

Então a questão é: como posso obter informações sobretodos os processos (vejo isso feito por aplicativos de terceiros, mas não vejo como)? É possível fazer isso sem privilégios de administrador?

questionAnswers(1)

yourAnswerToTheQuestion