iamdivine
@iamdivine

Как узнать путь процесса по его имени?

Добрый вечер.
Смотрел много гайдов и мануалов, но не нашел ничего годного.
Нужно для консольной программы сделать поиск пути запущенного процесса, вернее по его имени.
Windows
  • Вопрос задан
  • 586 просмотров
Решения вопроса 1
SerJook
@SerJook
кодер
Будет работать на Windows Vista и новее. Используется функция QueryFullProcessImageName.

#include <windows.h>
#include <tlhelp32.h>

int _tmain(int argc, _TCHAR* argv[])
{
    PROCESSENTRY32 entry;
    entry.dwSize = sizeof(PROCESSENTRY32);

    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    if (Process32First(snapshot, &entry) == TRUE) {
        while (Process32Next(snapshot, &entry) == TRUE) {
            if (_tcsicmp(entry.szExeFile, _T("explorer.exe")) == 0) {
                HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, entry.th32ProcessID);

                if (hProcess) {
                    TCHAR path[MAX_PATH];
                    DWORD cchExeName = MAX_PATH;
                    
                    if (QueryFullProcessImageName(hProcess, 0, path, &cchExeName) != 0) {
                        _tprintf(_T("%s\r\n"), path);
                    } 

                    CloseHandle(hProcess);
                }   
            }
        }
    }

    CloseHandle(snapshot);

    return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Найти HANDLE. GetModuleFileNameExA function.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы