프로세스 목록을 구하기 위해서 psapi.h 의 GetModuleFileNameEx 를 사용하면 현재 프로세스 목록을 얻을 수 있다.
추가 적인 정보를 얻기 위해서는 전체 경로를 얻어야 되는데..
이상하게도 상위의 함수를 사용하게 되면 smss.exe 같은 경우

"\SystemRoot\System32\smss.exe"

이렇게 반환되고 winlogon.exe 의 경우

"\??\D:\WINDOWS\system32\winlogon.exe" 

이렇게 반환된다.
그래서 다른 방법을 모색하다 GetProcessImageFileName API 를 이용하면 아래와 같이 반환되는 것을 확인하였다.

"\Device\HarddiskVolume3\WINDOWS\system32\smss.exe"

smss.exe , winlogon.exe 모두 제대로 반환하는 것이다.

문제는 \Device\HarddiskVolume3 이것을 "D:" 로 알맞게 수정하는 것인데..

다행스럽게도 QueryDosDevice API 를 이용하면 "D:" 를
\Device\HarddiskVolume3 이런식으로 반환해준다.

그래서 간단하게 함수로 하나 작성해서 원만히 구현하였다.



위 함수를 사용할 때 충분한 버퍼(MAX_PATH)를 인자로 넣어 주면 알맞게 수정해서 리턴해준다.
리턴값이 0이면 제대로 변환된 것이고 -1 이면 못 찾은것이다.
( ㅡㅡ; 그런일이 있을까.. 있음 안되는디.. ㅎㅎ )

사용예)



  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기