WTSEnumerateProcesses против CreateToolhelp32Snapshot - PullRequest
1 голос
/ 01 февраля 2011

Я хочу перечислить все запущенные процессы на 32 или 64 (локальном) компьютере.Что мне лучше использовать: WTSEnumerateProcesses или CreateToolhelp32Snapshot?

1 Ответ

2 голосов
/ 01 февраля 2011

Я бы сказал, CreateToolhelp32Snapshot, он работает на любой версии Windows, кроме NT4 из коробки.В WinXP WTSEnumerateProcesses работает только тогда, когда служба сервера терминалов работает (и когда она работает, WTSEnumerateProcesses предоставит вам информацию о процессах, которые вы не должны иметь при работе от имени администратора, эта дыра была закрыта в Vista)

Но эти две функции не дают вам одну и ту же информацию, поэтому это зависит от того, что вы ищете, под капотом обе они просто называют полу документированную ZwQuerySystemInformation

Получение полнойпуть к процессу в любом случае проблематичен (GetModuleFileNameEx завершается неудачно для WOW64, GetProcessImageFileName возвращает путь к ядру и имеет проблемы с переименованием, а QueryFullProcessImageName - Vista + и, возможно, имеет место в проблемах с путями)

...