社区
进程/线程/DLL
帖子详情
NT下如何得到进程ID所对应的EXE文件全路径?
olo
2000-04-28 09:54:00
EnumProcess得到的只是文件名,没有路径,怎么回事?
...全文
333
6
打赏
收藏
NT下如何得到进程ID所对应的EXE文件全路径?
EnumProcess得到的只是文件名,没有路径,怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rosement
2000-04-28
打赏
举报
回复
#include <windows.h>
#include <stdio.h>
#include "psapi.h"
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown";
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION and
PROCESS_VM_READ,
FALSE, processID );
// Get the process name.
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleFileNameEx(hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
}
// Print the process name and identifier.
printf( "%s (Process ID: %u)\n", szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
// Get the list of process identifiers.
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ )
PrintProcessNameAndID( aProcesses[i] );
}
编译以上代码,就可以实现功能,注意PSAPI.H和PSAPI.LIB你可以在VISUAL C++的
SAMPLES中找到,将这两个文件分别加入到C++的INCLUDE目录和LIB目录中,另外在工程编译时,在PROJECT的SETTINGS的LINK中加入PSAPI.LIB的应用,GOOD LUCK!
olo
2000-04-28
打赏
举报
回复
不好使
softdoctor
2000-04-28
打赏
举报
回复
用GetModuleFileName函数
olo
2000-04-28
打赏
举报
回复
货真价实!!!
加分了。
rosement
2000-04-28
打赏
举报
回复
货真价实!!!
olo
2000-04-28
打赏
举报
回复
非常感谢,好象跟我的程序差不多。
麻烦您告诉我这个程序运行后是否显示的是全路径,而不是文件名?
能确认吗?
根据
进程
句柄 获得可执行
文件
路径
的几种方法
通过
进程
句柄,获得可执行
文件
的
路径
,主要有以下几种方法: 第一种方法:也是最常用的方法,是通过GetModuleFileNameEx函数获得可执行
文件
的模块
路径
,这个函数从Windows
NT
4.0开始到现在的Vista系统都能使用,向后兼容性比较好。 【函数原型】调用失败将返回0。注:
进程
的句柄须有PROCESS_QUERY_INFORMATION 和 PROCESS_VM_READ权限。
根据
进程
句柄获得可执行
文件
路径
的几种方法
转载自: http://blog.csdn.net/hellokandy/article/details/52160077 通过
进程
句柄,获得可执行
文件
的
路径
,主要有以下几种方法: 第一种方法:也是最常用的方法,是通过GetModuleFileNameEx函数获得可执行
文件
的模块
路径
,这个函数从Windows
NT
4.0开始到现在的Vista系统都能使用,向后兼容性比较好。
C++ 获取
进程
信息
通常对于一个正在执行的
进程
而言,我们会关注
进程
的内存/CPU占用,网络连接,启动参数,映像
路径
,线程,堆栈等信息。windows平台没有直接提供获取
进程
启动参数的接口,但是可以通过解析
进程
的PEB(
进程
环境块)地址,获取信息。:这个
文件
包含了有关
进程
状态的各种信息,如
进程
ID
、父
进程
ID
、运行状态、内存使用情况等。:这个
文件
包含了
进程
的内存映射信息,显示了
进程
所使用的内存地址范围及其
对应
的权限。:这是一个
文件
夹,包含了
进程
当前打开的
文件
描述符列表。:这是每个正在运行的
进程
都有一个
对应
的目录,其中。
通过P
ID
获取
进程
全
路径
/*
NT
KERNELAPI
NT
STATUS PsLookupProcessByProcess
Id
( IN HANDLE Process
Id
, OUT PEPROCESS *Process );
NT
STATUS IoQueryFileDosDeviceName( IN PFILE_OBJECT FileObject, OUT POBJECT_NAME_INF...
Linux系统命令——通过端口确认
进程
及
路径
方法
比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章