关于XP没有QueryFullProcessImageName的问题(in ProcessInfo)

VB 调用 WindowsAPI 函数GetModuleFileName、 GetProcessImageFileName 和QueryFullProcessImageName获取进程文件路径 Windows编程中,需要获取一个已打开窗口程序的完整路径,以便下次用ShellExecute 函数直接打开。 能实现这一目标的Windows API函数有3个: GetModuleFileName、GetProcessImageFileName 和QueryFullProcessImageName。网上的API函数手册大多只能查到第一个,后面两个只能百度查找调用方法,然而却都讲得不清不楚。... 阅读详情

2011-03-29

记得以前看过一点儿windows核心编程,现在又拿起来重新看看,哎,基本上都忘了。简单看了看进程那部分,自己想写点关于进程的小程序,不过后来发现原来书配了源代码的。于是下到http://www.wintellect.com/books.aspx 把代码下了。打开,然后一切顺利,编译全部通过。不过执行ProcessInfo时,出现错误了。无法定位程序输入点QueryFullProcessImageNameW于KERNEL32.dll上 。去google了一下,原来是XP里面没有QueryFullProcessImageNameW这个东东啊。随后查了查msdn,上面说

 


 

Requirements

Minimum supported client

Windows Vista

Minimum supported server

Windows Server 2008

Header

Winbase.h (include Windows.h)

 


 

 

原来自己用的是XP,不满足人家最小要求啊,呵呵:)。接着往后看,有一个评论说:

 


 

For the best results use the following table to convert paths.

Windows 2000 = GetModuleFileName()
Windows XP x32 = GetProcessImageFileName()
Windows XP x64 = GetProcessImageFileName()
Windows Vista = QueryFullProcessImageName()
Windows 7 = QueryFullProcessImageName()


Note: If you are not aware the API GetProcessImageFileName() returns a kernel DOS device path. You can use the following API to map the device paths to a Win32 format.

GetLogicalDriveStrings
QueryDosDevice

 


原来32位XP还可以用GetProcessImageFileName呢。又查了下GetProcessImageFileName

DWORD WINAPI GetProcessImageFileName(
  __in   HANDLE hProcess,
  __out  LPTSTR lpImageFileName,
  __in   DWORD nSize
);
把源码改了改,如下:

再加上psapi.h这个头文件,然后编译要是有错,5555。 error   LNK2001:   unresolved   external   symbol 。???怎么会有这个问题呢,又看了下msdn,原来

Requirements

Minimum supported client

Windows XP

Minimum supported server

Windows Server 2003

Header

Psapi.h

Library

Kernel32.lib on Windows 7 and Windows Server 2008 R2, Psapi.lib if PSAPI_VERSION=1 on Windows 7 and Windows Server 2008 R2, Psapi.lib on Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000

DLL

Kernel32.dll on Windows 7 and Windows Server 2008 R2, Psapi.dll if PSAPI_VERSION=1 on Windows 7 and Windows Server 2008 R2, Psapi.dll on Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000
 
原来是自己没有仔细看啊,少了个psapi.lib啊,难怪啊。加上之后,哈哈可以运行啦,不写了,自己慢慢看看他是怎么写的,嘿嘿,顺便自己瞎改改。


 

 

 

 

 

 

 

 


通过进程PID获取可执行文件全路径,提取路径中的文件名,提取文件名后缀、提取全路径中的目录、枚举进程加载模块dll 需要用到如下API 32位的程序调用此API同样能获取到64位进程的可执行文件路径。下面是微软在文档中的说明,由于该API很简单就不再复述了hProcess [in]A handle to the process. This handle must be created with the PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION access right. For more information, see Proces 阅读详情

相关推荐

完整版进程管理器——全路径与图标展示

本文还有配套的精品资源,点击获取 简介:进程管理是操作系统的核心功能,允许用户监控和控制系统进程。本文介绍的“完整版进程管理器”提供了额外的进程信息,包括显示每个进程的全路径文件名和程序图标。这些信息对于识别进程来源、提高系统安全性和优化系统性能至关重要。用户可以通过这一工具结束无用进程,优化资源使用,并通过界面友好的方式管理进程。开发者可能使用了Windows API函数...

weixin_33670640的博客 1392

VB 使用 ZwQueryInformationProcess

Option ExplicitPublic Declare Function ZwQueryInformationProcess _Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, _ByVal ProcessInformationClass As PROCESSINFOCLASS, _ByVal ProcessInformation As Long...

資料為我做事 635

获取进程名称:Windows句柄操作详解

GetInfoTable函数在Windows系统编程中扮演着重要的角色,尤其是在进程管理方面。其核心功能是从系统中检索关于特定进程的详细信息表。这个函数通常被应用于系统监控、性能分析、安全审计等多种场景,开发者通过调用GetInfoTable可以获取进程的ID、句柄、优先级、内存使用情况等信息。例如,系统管理员可能需要定期检查系统的进程活动,以监控恶意软件或服务的异常行为;而应用开发者则可能需要获取进程信息来优化应用程序的性能。在这些情况下,GetInfoTable函数都能够提供关键的数据支持。

weixin_35677363的博客 1181

获取进程全路径

BOOL GetProcPath( __in BOOL bCurrentProc, __in ULONG ulPid, __inout LPTSTR lpProcPath, __in ULONG ulProcPathBufLen ) { BOOL bRet = FALSE; HMODULE hModule = NULL; HANDLE hProc

fengkuangfj的专栏 3104

VB根据PID得到进程路径

VB根据PID得到进程路径,改了一段代码,可以获取进程的PID和路径:   在窗体设计器里放一个listbox,命名为process;   再放2个txtbox,一个名为ProcessID,用来显示PID;   另一个名为Path,用来显示进程路径;   最后再放一个按钮,命名为cmdRefresh,用于刷新列表;   完成后即可运行代码

轻松修改任务管理器查看进程路径源代码

轻松修改任务管理器查看进程路径源代码,自己DIY任务管理器其实很简单

获取进程全路径方法(支持xp、win7、win10系统)

获取进程全路径方法(支持xp、win7、win10系统)获取进程的全路径的函数包括GetModuleFileNameEx、GetProcessImageFileName、QueryFullProcessImageName。这三个函数的原型:DWORD GetModuleFileNameEx(HANDLE hProcess,HMODULE hModule,LPTSTR lpFilename,DWOR...

深之JohnChen的专栏 6253

跨时钟域传输数据——单bit和多bit信号(总结)

总结单bit和多bit信号的跨时钟域传输

qq_42135020的博客 1万+

根据进程句柄获得可执行文件路径的几种方法

转载自: http://blog.youkuaiyun.com/hellokandy/article/details/52160077 通过进程句柄,获得可执行文件的路径,主要有以下几种方法: 第一种方法:也是最常用的方法,是通过GetModuleFileNameEx函数获得可执行文件的模块路径,这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好。

while(1) { smile(); } 13万+

RK3399跨楼层机器人:SLAM技术与商业应用解析

SLAM(即时定位与地图构建)技术是移动机器人自主导航的核心,通过激光雷达、视觉传感器等多源数据融合实现厘米级定位。RK3399作为高性能嵌入式平台,其六核架构和Mali GPU能高效处理SLAM算法与传感器数据。在商业场景中,这种技术组合可支撑机器人实现跨楼层物资配送、仓库盘点等复杂任务。以SLAMTEC Hermes平台为例,其模块化设计支持电梯控制集成,配合双深度相机和360°激光雷达,在医疗、物流等领域已实现12分钟平均配送效率和99.7%的识别准确率。

weixin_30376083的博客 620

GetModuleFileName 64位问题

利用GetModuleFileName在32位机器上开发的程序,在64位机器上运行的时候,GetModuleFileName和GetModuleFileNameEX获取信息失败。

董盼山的专栏 5607

Linux下基于AHCI controller模块实现SATA Platform驱动附代码详细流程

本文主要是针对ARM A55集成了AHSATA controller模块开发sata驱动,通过Platform的形式在linux识别到SSD,本文详细讲述整个开发过程,同时对SATA Platform驱动进行讲解。1、配置SATA Phy的初始化;2、打开SATA Platform相关编译开关;3、配置设备树;4、linux启动识盘。

Luckiers的博客 2497

python psutil模块查找进程_在Python中查找每个正在运行的进程的路径

作为管理员,如果不能获得PROCESS_QUERY_INFORMATION(0x400),则可以获得给定进程的PROCESS_QUERY_LIMITED_INFORMATION(0x1000)访问权限。QueryFullProcessImageNameW只需要有限的访问权限。然而,并不是所有情况下都能奏效。例如,上的安全描述符csrss.exe文件只授予对系统帐户的访问权限,不授予管理员权限。另一...

weixin_30284125的博客 735

数据驱动的细胞动力学:从高通量成像到机器学习预测的完整实践指南

细胞动力学研究细胞群体随时间变化的规律和命运决策机制,是理解生命过程的基础。其核心原理在于将传统的定性观察转化为定量分析,通过高通量成像、单细胞测序等技术获取多维时序数据,并运用机器学习与统计模型挖掘数据中的深层模式。这一技术价值在于实现从“描述现象”到“预测行为”的范式转变,显著提升研究的客观性和可重复性。在应用场景上,它广泛应用于药物筛选、疾病机制研究和发育生物学等领域,能够加速靶点发现和疗效评估。本文聚焦于数据驱动的细胞动力学分析,详细拆解了从实验设计、图像处理、单细胞追踪到特征工程与建模预测的端到端

weixin_29056781的博客 268

[特殊字符] 从零构建携程/飞猪机票价格爬虫:Python异步抓取与反爬对抗实战

在出行决策、竞品分析、价格预测模型训练等场景中,稳定获取携程(Ctrip)和飞猪(Fliggy)的实时机票价格波动数据是刚需。然而,这两大平台均部署了业界顶尖的反爬体系——包括但不限于:动态请求签名(SignToken设备指纹采集(UACanvasWebGL接口参数加密(X-Sign_abtestcookie混淆)频率限制与 IP 封禁(滑动窗口 + 行为检测)目录前言:为什么需要自建机票价格爬虫?一、技术选型与项目架构1.1 核心技术栈1.2 系统架构图(文字描述)1.3 法律与道德声明。

2201_76125261的博客 338

GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)

根据官方的说法: For the best results use the following table to convert paths. Windows 2000 = GetModuleFileNameEx()Windows XP x32 = GetProcessImageFileName()Windows XP x64 = GetProcessImageFileName()Window...

weixin_30500473的博客 423

免杀思路总结

免杀思路总结 1.免杀技术简介 1.免杀的重要性 2.免杀的难度 3.杀毒软件的排行 国外 国内 1 、Bitdefender 1、360 2 、Norton 360 2、智量安全(没测过,据说很厉害) 3 、Kaspersky 3、火绒安全 4 、Webroot 4、金山独霸 5 、Trend Micro 5

LiBai'S BLOG 1万+

无法定位程序输入点

无法定位程序输入点

风无痕 1万+

一套适合 ABAP 初级和中级开发人员,从入门到提高的 ABAP 学习教程

曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。 ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5921

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName

  想获得进程可执行文件的路径通常有三个方法:一: 调用GetModuleFileNameEx函数获得可执行文件的模块路径这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好。 二:调用GetProcessImageFileName函数,这个函数在Windows XP及其以后的系统中都能使用。 三:调用Windows Vista新增

David的专栏 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Delphi】运行程序时自动检查程序是否已经有一个实例在运行

//uCheckAppRunning.pas: unit uCheckAppRunning; //检查程序是否已经在运行,不允许运行多个实例 interface uses System.SysUtils, System.Classes, Winapi.Windows, Vcl.Forms, Winapi.Messages, Vcl.ExtCtrls, Vcl.Menus, Vcl.Dialogs, Winapi.TlHelp32, Winapi.PsAPI; type TShow...

BlueStorm的博客 1477

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...

http://blog.youkuaiyun.com/bichenggui/article/details/4774457 -------------------------------------------------- 获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName 20...

weixin_33726313的博客 694

Windows 中通过进程 ID 获取可执行文件路径的方法

Windows中通过进程ID获取进程全路径 GetModuleFileNameEx 在Win7上,如果32进程调用用来获取64位进程路径,返回失败。 由于函数GetModuleFileName() 和 函数GetModuleFileNameEx()都是通过PEB头信息获取进程文件路径,所以它们只能工作于与调用进程相同位数的进程,比如:调用进程32位时,这两个函数只对32位进程有效,64位同理。 GetProcessImageFileName 所以在64位进程与32位进程并.

langshanglibie的专栏 5227

进程完整路径获取方式底层实现剖析

解析GetProcessImageFileName和QueryFullProcessImageName、SeLocateProcessImageName函数,进程完整路径获取方式底层实现剖析

sunjiaoya的博客 1671
上一篇: 【转载】提高编程技能最有效的方法
下一篇: Background of the Microsoft C Run-time Libraries
RFC2008
博客等级 码龄18年 45粉丝 14原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值