获取进程完整路径名 不用psapi,不用createtoolhelp32snapshot,不用驱动,请问大家还有什么办法获取进程的完整路径名?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 "进程环境块"(peb)中并没有找到这个 给你个参考:http://security.zol.com.cn/2005/0427/167328.shtml 未果,我之所以不想用"psapi"和"createtoolhelp32snapshot"是因为速度慢,不用驱动,是因为驱动要花我不少时间来完成!!!kpeb里可以得到进程全名,但操作系统不同,KPEB的偏移不同,这些正在找资料,但没时间,希望用过的高手告诉我!!! ///////////////////////////////////////////////////////////////////////////////////** 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);}elseprintf("Failed!!!\n");}CloseHandle(hProcess);CloseHandle(hModule);itoa(processcount,temp,10);printf("\nProcess Count:%s\n\n",temp);return 0;}////////////////////////////////////////////////////////////////////////////////// never_stop_my_step() 楼上哥哥,没看到我的条件?--------------------------那更简单了哈.NtQueryInformationProcess NtQuerySystemInformation这两个Native API足够帮你解决问题了. 补充一点,两个Native API任选一个..至于能不能实现,看MSDN去. NtQueryInformationProcessNtQuerySystemInformation肯定能实现,哈哈,看MSDN可能不够,要看《Windows NT Native API Reference》 listCtrl 显示不出图标? 外网如何区别局域网的两台机器? 高手帮忙!关于CFile写文件问题 OnKeyDown中能不能同时分辨多个键? 指针这样写是否安全? 数据库连接问题 如何向服务器端口发送数据包 请教关于窗口模式下的翻页老师出现撕裂的问题 100分立马给,有关中文,英文单词朗读的api有哪些,如何得到 关于软件的时间限制的实现问题 dll里调用DLL可不可以 Windows media player 组件 怎样得到视频文件所需的窗口大小
http://security.zol.com.cn/2005/0427/167328.shtml
kpeb里可以得到进程全名,但操作系统不同,KPEB的偏移不同,这些正在找资料,但没时间,希望用过的高手告诉我!!!
* 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;
}//////////////////////////////////////////////////////////////////////////////////
楼上哥哥,没看到我的条件?
--------------------------
那更简单了哈.NtQueryInformationProcess
NtQuerySystemInformation这两个Native API足够帮你解决问题了.
NtQuerySystemInformation肯定能实现,哈哈,看MSDN可能不够,要看《Windows NT Native API Reference》