Récupération d’une liste complète des processus Windows en C

Je développe une bibliothèque de collecte de statistiques de processus simple pour Windows. EnumProcesses() les processus avec la fonction EnumProcesses() et j’essaye de les ouvrir avec l’appel OpenProcess() avec l’indicateur PROCESS_QUERY_INFORMATION. Le dernier échoue pour un tas de processus système, cependant. Dans le même temps, je constate que des applications similaires (outils sysinternals, gestionnaire de tâches, etc.) semblent pouvoir récupérer des informations sur ces processus même sans nécessiter de privilèges d’administrateur. J’ai essayé d’activer le privilège SeDebugPrivilege, mais cela n’a aidé que lorsque j’ai exécuté mon programme en tant qu’administrateur – et pourtant, je ne pouvais pas ouvrir le processus Idle, le processus système et le processus audiodg (je voudrais pouvoir récupérer leur informations pour la cohérence aussi bien).

Donc, la question est: comment puis-je obtenir des informations sur tous les processus (je le vois par des applications tierces, mais je ne vois pas comment)? Est-il possible de le faire sans privilèges d’administrateur?

Êtes-vous familier avec CreateToolhelp32Snapshot et cette fonction aussi Process32First .

J’ai trouvé ce code-projet Quand je l’ai utilisé il y a quelque temps, cela m’a beaucoup aidé …