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)文件全路径(代码)相关推荐

  1. 获取指定进程的加载基址

    背景 之前,自己写过一个进程内存分析的小程序,其中,就有一个功能是获取进程在内存中的加载基址.由于现在Windows系统引入了ASLR (Address Space Layout Randomizat ...

  2. 获取指定进程所占用内存、指定GPU显存信息、所有GPU型号和驱动

    ######################################################### # 获取指定进程所占用内存 ############################ ...

  3. 浏览器打开任意可执行exe文件方法

    思路:通过注册表注册自定义URL协议执行bat脚本,将文件路径作为参数传入 环境:win10 前置问题与条件 问题1:可以从浏览器直接打开可执行文件吗? 答:不能.其实可以通过 ActiveXObje ...

  4. delphi打印html文件路径,Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法...

    1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...

  5. windows使用命令执行exe文件

    很多时候我们需要在目标windows的机器上执行exe文件获取meterpreter,这个时候只需要执行一条简单的命令 进入木马的文件夹,执行 start+空格+xxx.exe

  6. windows 环境下,可执行 exe 文件和 .dll 文件在不同目录下的处理办法

    在 Windows 操作系统中,当可执行 exe 文件需要使用某个.dll 文件时,它会在以下几个地方寻找该文件: 首先,它会在与可执行文件相同的目录中查找该文件. 如果找不到该文件,则会在系统搜索路 ...

  7. Java执行.exe文件

    Java执行.exe文件, 这里以Java调用g++编译程序为例讲解 (我的g++编译器的和程序都在H:/bin/gcc/bin这个目录) 先来看程序: package wen.hui; import ...

  8. java读取hdfs文件夹_HDFS 读取、写入、遍历文件夹获取文件全路径、append

    1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSyst ...

  9. HDFS 读取、写入、遍历文件夹获取文件全路径、append

    版权声明:本文为博主原创文章,未经博主同意不得转载.安金龙 的博客. https://blog.csdn.net/smile0198/article/details/37573081 1.从HDFS中 ...

最新文章

  1. 多媒体互动受青睐,演绎未来3G网络
  2. jQuery.merge与concat的区别
  3. s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(一 硬件驱动层)
  4. 【Git】切换分支,以及git stash的使用
  5. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素...
  6. bootstrap轮播图 原点变为方块_JS实现无缝切换轮播图(自动+手动)
  7. 迁移python虚拟环境搭建_python虚拟环境virtualenv创建与迁移
  8. LeetCode 386. Lexicographical Numbers
  9. 发那科oimf是什么时候出的_请问下FANUC Oi-MF系统怎么把卡里的程序传到机床里面?...
  10. 北京知产局:鼓励当事人用区块链,获取、固定知识产权纠纷证据
  11. 凯恩斯归来,大堡礁畅游记
  12. localhost和127.0.0.1的区别
  13. 数据库学习之初见oracle
  14. 数据库sql简单的优化方案
  15. 如何在Ubuntu中安装搜狗输入法
  16. 关于m3u8格式的视频文件ts转mp4下载和key加密问题
  17. vscode插件及配置
  18. 【Linux命令】modprobe命令
  19. 线程池基本了解及其参数配置
  20. 说,有一群 小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在有多少小孩在玩,请用面向对象的思想编写程序解决

热门文章

  1. byte数组转blob类型_Java类型相互转换byte[]类型,blob类型
  2. python可以神奇的做什么_可以用 Python 编程语言做哪些神奇好玩的事情?
  3. Windows下Github使用
  4. JavaScript 中的日期和时间
  5. 自己动手写Docker系列 -- 3.3使用命令管道优化参数传递
  6. 天津市七下计算机课程,七年级下册信息技术课程教案.doc
  7. 消防信号二总线有没电压_荆门剧院消防设备电源监控系统的设计与应用
  8. 两个向量的点乘和叉乘怎么算_【解析几何】赋值法(点乘双根法)解决解析几何大题...
  9. Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
  10. CodeForces - 589B