获取指定进程所对应的可执行(EXE)文件全路径(代码)
1 #include "Psapi.h" 2 #pragma comment(lib, "Psapi.lib ")//需要包含头文件哦!
1 /* 功 能:获取指定进程所对应的可执行(EXE)文件全路径 2 * 参 数:hProcess - 进程句柄。必须具有PROCESS_QUERY_INFORMATION 或者 3 PROCESS_QUERY_LIMITED_INFORMATION 权限 4 * sFilePath - 进程句柄hProcess所对应的可执行文件路径 5 * 返回值: 6 */ 7 void GetProcessFilePath(IN HANDLE hProcess, OUT CString& sFilePath) 8 { 9 sFilePath = _T(""); 10 TCHAR tsFileDosPath[MAX_PATH + 1]; 11 ZeroMemory(tsFileDosPath, sizeof(TCHAR)*(MAX_PATH + 1)); 12 if (0 == GetProcessImageFileName(hProcess, tsFileDosPath, MAX_PATH + 1)) 13 { 14 return; 15 } 16 17 // 获取Logic Drive String长度 18 UINT uiLen = GetLogicalDriveStrings(0, NULL); 19 if (0 == uiLen) 20 { 21 return; 22 } 23 24 PTSTR pLogicDriveString = new TCHAR[uiLen + 1]; 25 ZeroMemory(pLogicDriveString, uiLen + 1); 26 uiLen = GetLogicalDriveStrings(uiLen, pLogicDriveString); 27 if (0 == uiLen) 28 { 29 delete[]pLogicDriveString; 30 return; 31 } 32 33 TCHAR szDrive[3] = TEXT(" :"); 34 PTSTR pDosDriveName = new TCHAR[MAX_PATH]; 35 PTSTR pLogicIndex = pLogicDriveString; 36 37 do 38 { 39 szDrive[0] = *pLogicIndex; 40 uiLen = QueryDosDevice(szDrive, pDosDriveName, MAX_PATH); 41 if (0 == uiLen) 42 { 43 if (ERROR_INSUFFICIENT_BUFFER != GetLastError()) 44 { 45 break; 46 } 47 48 delete[]pDosDriveName; 49 pDosDriveName = new TCHAR[uiLen + 1]; 50 uiLen = QueryDosDevice(szDrive, pDosDriveName, uiLen + 1); 51 if (0 == uiLen) 52 { 53 break; 54 } 55 } 56 57 uiLen = _tcslen(pDosDriveName); 58 if (0 == _tcsnicmp(tsFileDosPath, pDosDriveName, uiLen)) 59 { 60 sFilePath.Format(_T("%s%s"), szDrive, tsFileDosPath + uiLen); 61 break; 62 } 63 64 while (*pLogicIndex++); 65 } while (*pLogicIndex); 66 67 delete[]pLogicDriveString; 68 delete[]pDosDriveName; 69 }
转载于:https://www.cnblogs.com/cxys/p/4959597.html
获取指定进程所对应的可执行(EXE)文件全路径(代码)相关推荐
- 获取指定进程的加载基址
背景 之前,自己写过一个进程内存分析的小程序,其中,就有一个功能是获取进程在内存中的加载基址.由于现在Windows系统引入了ASLR (Address Space Layout Randomizat ...
- 获取指定进程所占用内存、指定GPU显存信息、所有GPU型号和驱动
######################################################### # 获取指定进程所占用内存 ############################ ...
- 浏览器打开任意可执行exe文件方法
思路:通过注册表注册自定义URL协议执行bat脚本,将文件路径作为参数传入 环境:win10 前置问题与条件 问题1:可以从浏览器直接打开可执行文件吗? 答:不能.其实可以通过 ActiveXObje ...
- delphi打印html文件路径,Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法...
1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...
- windows使用命令执行exe文件
很多时候我们需要在目标windows的机器上执行exe文件获取meterpreter,这个时候只需要执行一条简单的命令 进入木马的文件夹,执行 start+空格+xxx.exe
- windows 环境下,可执行 exe 文件和 .dll 文件在不同目录下的处理办法
在 Windows 操作系统中,当可执行 exe 文件需要使用某个.dll 文件时,它会在以下几个地方寻找该文件: 首先,它会在与可执行文件相同的目录中查找该文件. 如果找不到该文件,则会在系统搜索路 ...
- Java执行.exe文件
Java执行.exe文件, 这里以Java调用g++编译程序为例讲解 (我的g++编译器的和程序都在H:/bin/gcc/bin这个目录) 先来看程序: package wen.hui; import ...
- java读取hdfs文件夹_HDFS 读取、写入、遍历文件夹获取文件全路径、append
1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSyst ...
- HDFS 读取、写入、遍历文件夹获取文件全路径、append
版权声明:本文为博主原创文章,未经博主同意不得转载.安金龙 的博客. https://blog.csdn.net/smile0198/article/details/37573081 1.从HDFS中 ...
最新文章
- 多媒体互动受青睐,演绎未来3G网络
- jQuery.merge与concat的区别
- s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(一 硬件驱动层)
- 【Git】切换分支,以及git stash的使用
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素...
- bootstrap轮播图 原点变为方块_JS实现无缝切换轮播图(自动+手动)
- 迁移python虚拟环境搭建_python虚拟环境virtualenv创建与迁移
- LeetCode 386. Lexicographical Numbers
- 发那科oimf是什么时候出的_请问下FANUC Oi-MF系统怎么把卡里的程序传到机床里面?...
- 北京知产局:鼓励当事人用区块链,获取、固定知识产权纠纷证据
- 凯恩斯归来,大堡礁畅游记
- localhost和127.0.0.1的区别
- 数据库学习之初见oracle
- 数据库sql简单的优化方案
- 如何在Ubuntu中安装搜狗输入法
- 关于m3u8格式的视频文件ts转mp4下载和key加密问题
- vscode插件及配置
- 【Linux命令】modprobe命令
- 线程池基本了解及其参数配置
- 说,有一群 小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在有多少小孩在玩,请用面向对象的思想编写程序解决
热门文章
- byte数组转blob类型_Java类型相互转换byte[]类型,blob类型
- python可以神奇的做什么_可以用 Python 编程语言做哪些神奇好玩的事情?
- Windows下Github使用
- JavaScript 中的日期和时间
- 自己动手写Docker系列 -- 3.3使用命令管道优化参数传递
- 天津市七下计算机课程,七年级下册信息技术课程教案.doc
- 消防信号二总线有没电压_荆门剧院消防设备电源监控系统的设计与应用
- 两个向量的点乘和叉乘怎么算_【解析几何】赋值法(点乘双根法)解决解析几何大题...
- Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
- CodeForces - 589B