Programming/WINAPI

[WinAPI/C++] PID로 프로세스명 조회하는 방법 ( QueryFullProcessImageName )

smok95 2020. 6. 24. 07:58
반응형

프로세스ID로 프로세스명(경로 포함) 확인하는 방법입니다. 

#include <Windows.h>
#include <string>
#include <iostream>

std::string GetProcessName(const DWORD pid) {
	std::string name = "unknown";

	DWORD error=0;

	if(HANDLE hProc = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid)) {
		char buf[512]={0,};
		DWORD bufLen = sizeof(buf);
		QueryFullProcessImageName(hProc, 0, buf, &bufLen);
		CloseHandle(hProc);
		name = buf;
	}

	return name;
}

int main() {

	DWORD pid = 확인할 프로세스ID;

	std::string name = GetProcessName(pid);

	std::cout << "process name=" << name << std::endl;

	return 0;
}

Windows Vista 이상 부터 사용할 수 있으며 UAC 프로세스 무결성 수준이 높더라도 확인이 가능한 코드입니다.

단, 시스템 프로세스는 확인이 안됩니다.

경로가 포함된 프로세스명이 리턴되기 때문에 경로가 필요없는 경우에는 잘라서 사용하시면 됩니다.

 

반응형