不用psapi,不用createtoolhelp32snapshot,不用驱动,请问大家还有什么办法获取进程的完整路径名??

解决方案 »

  1.   

    "进程环境块"(peb)中并没有找到这个
      

  2.   

    给你个参考:
    http://security.zol.com.cn/2005/0427/167328.shtml
      

  3.   

    未果,我之所以不想用"psapi"和"createtoolhelp32snapshot"是因为速度慢,不用驱动,是因为驱动要花我不少时间来完成!!!
    kpeb里可以得到进程全名,但操作系统不同,KPEB的偏移不同,这些正在找资料,但没时间,希望用过的高手告诉我!!!
      

  4.   

    ///////////////////////////////////////////////////////////////////////////////////*
    * ShowProcessPath_PSAPI
    * 版权所有 (C) 2004 赵春生
    * 2004.08.08
    * http://timw.yeah.net
    * http://timw.126.com
    * 本程序适用于:WinNT
    * 代码在Win2000P+SP4 + VC6+SP5测试通过
    */#include <stdio.h>
    #include <windows.h>
    #include "PSAPI.H"
    #pragma comment( lib, "PSAPI.LIB" )int main(void)
    {DWORD processid[1024],needed,processcount,i;
    HANDLE hProcess;
    HMODULE hModule;
    char path[MAX_PATH] = "",temp[256];printf("ShowProcessPath with [Process Status API]\n\n");EnumProcesses(processid, sizeof(processid), &needed);
    processcount=needed/sizeof(DWORD);for (i=0;i<processcount;i++)
    {
    hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i]);
    if (hProcess)
    {
    EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);
    GetModuleFileNameEx(hProcess, hModule, path, sizeof(path));
    GetShortPathName(path,path,256);
    itoa(processid[i],temp,10);
    printf("%s --- %s\n",path,temp);
    }
    else
    printf("Failed!!!\n");
    }CloseHandle(hProcess);
    CloseHandle(hModule);itoa(processcount,temp,10);
    printf("\nProcess Count:%s\n\n",temp);return 0;
    }//////////////////////////////////////////////////////////////////////////////////
      

  5.   

    never_stop_my_step() 
    楼上哥哥,没看到我的条件?
    --------------------------
    那更简单了哈.NtQueryInformationProcess 
    NtQuerySystemInformation这两个Native API足够帮你解决问题了.
      

  6.   

    补充一点,两个Native API任选一个..至于能不能实现,看MSDN去.
      

  7.   

    NtQueryInformationProcess
    NtQuerySystemInformation肯定能实现,哈哈,看MSDN可能不够,要看《Windows NT Native API Reference》