Список текущего процесса в golang, Windows version

Как я могу получить список текущих процессов в golang под Windows?

Мне нужно что-то вроде:

список текущего запущенного процесса в Golang

но можно использовать и под Windows.

3 ответов


Я только что реализовал необходимую вам функцию (EnumProcess как указано выше axw). Проверьтеhttps://github.com/AllenDang/w32. Возможно, ты захочешь подождать, пока мой запрос не будет выполнен. :) Пример использования:https://gist.github.com/3083408


вам нужно использовать функцию Windows API EnumProcesses. The syscall пакет в Windows позволяет загружать произвольные библиотеки DLL и их функции (например, через LoadLibrary/GetProcAddress). Так что вы можете добраться до EnumProcesses на psapi.dll. Это дает вам список PID; затем вы можете использовать OpenProcess и EnumProcessModules для получения имени процесса.

возможно, кто-то уже сделал работу по реализации этого, но я ничего не знаю. Если вы ничего не можете найти, возьмите посмотрите на источник пакета syscall (скажем,src/pkg/syscall / zsyscall_windows_386.go) и сделать что-то похожее на то, что сделано для других функций Windows API.


согласно документам пакета syscall: этот пакет заблокирован. Код вне стандартного репозитория Go должен быть перенесен для использования соответствующего пакета в golang.org/x/sys хранилище.

вы можете использовать golang.org/x/sys/windows, он имеет Process32First и Process32Next, чтобы перечислить системные процессы.