2012-04-14 7 views
6

Pracuję nad prostą biblioteką zbierania statystyk procesów dla systemu Windows. Wymieniam procesy za pomocą funkcji EnumProcesses() i próbuję je otworzyć, korzystając z połączenia OpenProcess() z flagą PROCESS_QUERY_INFORMATION. Ten ostatni jednak nie działa w przypadku wielu procesów systemowych. Jednocześnie widzę, że podobne aplikacje (narzędzia sysinternals, menedżer zadań itp.) Wydają się być w stanie pobierać informacje o tych procesach, nawet bez konieczności korzystania z uprawnień administratora. Próbowałem włączyć przywilej SeDebugPrivilege, ale pomogło to tylko wtedy, gdy uruchomiłem mój program jako administrator - i nadal nie mogłem otworzyć procesu bezczynności, procesu systemowego i procesu audiodg (chciałbym móc odzyskać ich informacje również dla spójności).Wywoływanie pełnej listy procesów systemu Windows w C

Pytanie brzmi: w jaki sposób mogę uzyskać informacje o procesach wszystkie (widzę to zrobione przez aplikacje firm trzecich, ale nie widzę jak)? Czy można to zrobić bez uprawnień administratora?

Odpowiedz

2

Czy znasz CreateToolhelp32Snapshot i tę funkcję również Process32First.

Znalazłem to code-project Kiedy użyłem go jakiś czas temu, to bardzo mi pomogło ...

+0

Ohh napisałeś windows 7, nie wiem, czy to działa na szczycie win7 na nieuprzywilejowanego użytkownika , daj znać czy działa. – 0x90

+1

To zadziałało. Dziękuję Ci! –

Powiązane problemy