C ++ Windows — Как получить путь к процессу из его PID (ошибка)

Я хочу использовать pid, чтобы получить полный путь к процессу.

#include <psapi.h>

HANDLE processHandle = NULL;
TCHAR filename[MAX_PATH];

processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, nPID);
if (processHandle != NULL)
{
if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0)
{
//fail to get module file name
}
else
{
//module file name : filename
}
CloseHandle(processHandle);
}
else
{
//fail to open process
}

Это код, который получает путь к процессу, используя pid.

Однако, когда я выполняю его, возникает следующая ошибка.

(Я использую Visual C ++ 6.0.)

Linking...
Process01Dlg.obj : error LNK2001: unresolved external symbol _GetModuleFileNameExA@16
Debug/Process01.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
  • QueryFullProcessImageName
  • GetModuleFileName
  • GetModuleFileNameEx
  • GetProcessImageFileName

Все вышеперечисленные методы вызвали ошибку.

Это проблема с версией?

Ответьте, пожалуйста. Спасибо 🙂

1

Решение

Кажется, вы забыли связать свой продукт с psapi.lib, Добавьте его в зависимости проекта.

Не уверен, что это будет работать в VC6.0.

Однако MSDN рекомендует использовать другие функции для получения имен процессов:

Чтобы получить имя основного исполняемого модуля для удаленного процесса, используйте GetProcessImageFileName или же QueryFullProcessImageName функция. Это более эффективно и надежно, чем вызов GetModuleFileNameEx функция с дескриптором модуля NULL.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]