13 Security Lab

[스크랩]프로세스 아이디와 윈도우 핸들을 이용 파일명 구하기 [Win32, WinCE, C++] 본문

Computer Science/Programming

[스크랩]프로세스 아이디와 윈도우 핸들을 이용 파일명 구하기 [Win32, WinCE, C++]

Maj0r Tom 2012. 10. 13. 21:06

실행 중인 프로세스의 윈도우 핸들이나  프로세스 아이디를 이용해서 
파일 명과 풀패스를 구하는 방법

Process32Next를 이용하면 파일 명밖에 구할 수가 없음

Win32와 WinCE에서 모두 사용이 가능
WinCE에서 ToolHelp 라이브러리가 필요

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ULONG  pid = 0;   
 
GetWindowThreadProcessId(hwnd, &pid);   // 핸들로 프로세스 아이디 구하기
if (pid == 0)   
    return "";   
 
TCHAR filename[MAX_PATH];   
PROCESSENTRY32 pe;   
pe.dwSize=sizeof(PROCESSENTRY32);  
// 실행 중인 모든 프로세스의 스냅샷
HANDLE hSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );   
 
if (Process32First( hSnapshot, &pe ))   
{   
    HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, 0, pid);   // 프로세서 아이디로 핸들을 구하기
    if (hProcess)   
    {   
    TCHAR szPath[MAX_PATH];
    ZeroMemory(szPath, sizeof(szPath));
    
    // wince 경우 아래와 같이
    GetModuleFileName(hProcess, szPath, MAX_PATH);  
    
    // win32 경우
    // 이 함수를 사용하기 위해서는 'Psapi.h'라는 헤더, psapi.lib 을 추가해주어야 한다.
    GetModuleFileNameEx(hProcess, NULL, szPath, MAX_PATH); 
    
    _tcscpy(filename,szPath);   
    }   
}


Comments