获取指定进程所对应的可执行(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 }
时间: 2024-10-31 20:25:04

获取指定进程所对应的可执行(EXE)文件全路径(代码)的相关文章

HDFS 读取、写入、遍历目录获取文件全路径

1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSystem.get(conf); FSDataInputStream fsin= fs.open(path ); BufferedReader br =null; String line ; try{ br = new BufferedReader(new InputStreamReader(fsin))

asp.net 客户端上传文件全路径获取方法

asp.net  获取客户端上传文件全路径方法: eg:F:\test\1.doc 基于浏览器安全问题,浏览器将屏蔽获取客户端文件全路径的方法,只能获取到文件的文件名,如果需要获取全路径则需要另想其他方法 如下提供两种方法: 方法1:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可. 方法2: function getPath() { //获取file 控件对象 var obj =

ie下获取上传文件全路径

ie下获取上传文件全路径,3.5之后的火狐是没法获取上传文件全路径的 1 /*获取上传文件路径*/ 2 function getFilePath(obj) { 3 var form = $(this).parents("form"); 4 form.validate(); 5 var fileObj = obj; 6 if (fileObj) { 7 if (window.navigator.userAgent.indexOf("MSIE") >= 1) {

VS下面运行release版本可以正常运行而直接执行exe文件会出现问题

文如其名,最近做的两个不同的任务都遇到了这样一个问题,就是在VS下面运行release版本的程序可以正常运行而直接执行exe文件会出现问题,而且是偶有发生,在不同电脑发生的频率还不一样.一开始百思不得其解,以为是代码问题,后来百无聊奈怀疑VS运行release版本的程序时可能使用了兼容模式.于是右键exe文件打开文件属性,转到兼容性页面将"以兼容模式运行这个程序"选项勾上,确定之后再运行没有出现错误!之后测试了100次还是没有出现像之前一样的错误,因而确定了问题的原因.真是坑爹坑不完啊

获取指定进程号,并kill掉

直接上案例: 例子:获取gerrit进程 方法:$ps -aux |grep nginx |grep -v grep |awk '{print $2}'  或者 $ps -ef |grep nginx |grep -v grep |awk '{print $2}' 例子:获取gerrit进程并kill掉 方法:$ps -aux |grep gerrit |grep -v grep |awk '{print "kill -9 " $2}' |sh 或者 $ps -ef |grep ger

java开启多进程,执行.exe文件

1. .exe文件的生成 使用自己生成的应用程序,该应用程序带有参数.为了简便,以打印  输入的参数 为例,该应用程序的源码如下: // myPrint.cpp #include < iostream > int main(int argc, char * argv[]){ char * it = argv[1]; if (it == nullptr){ std::cout << "This is nothing to be printed." <<

C#路径中获取文件全路径、目录、扩展名、文件名称

常用函数 需要引用System.IO   直接可以调用Path的静态方法 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 //获取当前运行程序的目录 7 string fileDir = Environment.CurrentDirectory; 8 Console.WriteLine("当前程序目录:"+fileDir); 9 10 //一个文件目录 11 string filePath = "C:

C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;//该值确定是否可以选择多个文件 dialog.Title = "请选择文件夹"; dialog.Filter = "所有文件(*.*)|*.*"; if (dialog.ShowDial

linux获取文件全路径的方法

获取路径的各种相关方法: 获取文件名: basename /home/cuizhiliang344/note.txt note.txt 获取目录: dirname /home/cuizhiliang344/note.txt /home/cuizhiliang344 通过一个文件获取全路径 方法一: readlink -f  note.txt /home/cuizhiliang344/note.txt 方法二: python -c 'import os; print(os.path.abspath