abccbaandy
9/8/2015 - 5:35 AM

getProcessPathByName.c

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

#pragma comment(lib, "Psapi.lib")

void getProcessPathByName(char* name)
{
	PROCESSENTRY32 entry;
	entry.dwSize = sizeof(PROCESSENTRY32);

	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

	HANDLE processHandle = NULL;
	TCHAR filename[MAX_PATH];

	if (Process32First(snapshot, &entry) == TRUE)
	{
		while (Process32Next(snapshot, &entry) == TRUE)
		{
			if (_stricmp(entry.szExeFile, name) == 0)
			{
				processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, entry.th32ProcessID);

				if (processHandle != NULL) {
					if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0) {
						printf("Failed to get module filename.\n");
					}
					else {
						printf("Module filename is: %s\n", filename);
						//PrintFileVersion(filename);
					}
					CloseHandle(processHandle);
				}
				else {
					printf("Failed to open process.\n");
				}
			}
		}
	}
	CloseHandle(snapshot);
}

int main()
{
	getProcessPathByName("LINE.exe");
	system("PAUSE");
}