天天看點

通過程序擷取exe全路徑

#include<stdio.h>
#include<Windows.h>
#include<Psapi.h>
#pragma comment(lib,"Psapi.lib")
int main()
{
    TCHAR path[MAX_PATH+]={};
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, );
    if(hProcess == NULL)
        return ;
    /*
    第一種方法是GetProcessImageFileName函數,
    這個函數在Windows XP及其以後的系統中都能使用,
    使用此函數傳回的路徑不是通常的系統盤符,如"C:\...",
    而是驅動層的表示方式"\Device\HarddiskVolume1\...",
    是以使用起來不是很友善。
    int ret = GetProcessImageFileNameA(hProcess,path,MAX_PATH+);
    if(ret == )
    {
        printf("%d\n",GetLastError());
    }
    else
        printf("%s",path);
    */

    /* error 
if(!GetModuleFileNameEx(hProcess,NULL,path,MAX_PATH+))
{
    printf("%d\n",GetLastError());
    return false;

}wsprintf(L"%s\n",path);*/
    /*
    win7  vista 以上系統可用
    DWORD size;
    if(!QueryFullProcessImageName(hProcess,NULL,path,&size))
    {
        printf("%d\n",GetLastError());
    }
    else
        wprintf(L"%s\n",path);


    */return ;
}
           

繼續閱讀