关于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

ESP32C3的I2S接口详解:以驱动PCM5102A为例,避开时序与配置的那些坑

本文深入解析ESP32C3的I2S接口驱动PCM5102A DAC的完整解决方案,涵盖时序对齐、PCB优化和寄存器级配置。通过实际案例分享时钟树分析、信号完整性设计和底层调试技巧,帮助开发者避开常见陷阱,实现高质量音频输出。重点探讨了I2S协议栈、电源滤波优化及DMA传输异常处理等关键技术要点。

weixin_30254435的博客 299

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

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

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

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 194

【计算摄影】相机成像原理:从光到JPEG图像

本文我们将从最基本的相机成像原理开始论述,再讨论光线进入相机后,经过一系列处理成为JPEG图像的大致流程。

qq_35149975的博客 2万+

GetModuleFileName 64位问题

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

董盼山的专栏 5607

Win11大版本更新失败:系统保留分区空间不足的终极解决方案

本文针对Windows 11大版本更新时遇到的“系统保留分区空间不足”错误,提供了详细的诊断与解决方案。核心问题在于EFI系统分区(ESP)空间过小,导致更新失败。文章重点介绍了使用傲梅分区助手等第三方工具安全扩展EFI分区的完整步骤,并提供了手动清理、使用安装介质修复等替代方案,帮助用户彻底解决更新障碍,顺利完成Win11升级。

weixin_29280219的博客 951

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

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

weixin_30284125的博客 735

重构工业交互体验:响应式数据可视化大屏解决方案

从智慧园区到数据中心,从水务监控到风力发电场景,HT 通过 2D/3D 组态技术与响应式布局机制,让数据以更灵活、更精准的方式呈现场景动态 —— 这正是 HT 技术在工业可视化领域的核心价值。例如,在智慧楼宇监控系统中,HT 引擎可实时渲染建筑结构、设备状态与数据流,同时确保画面在不同尺寸屏幕上的一致性。以某工业数据中心大屏为例,HT 通过暗红色主调搭配工业元素,结合粉色与黄色点缀,打破传统深蓝色大屏的视觉定式,同时通过矢量图形确保色彩在不同亮度下的辨识度 —— 这正是 HT 技术在视觉设计上的独特优势。

Hightopo的博客 889

vhr 微人事系统安装与部署教程(SpringBoot + Vue 项目实战)

vhr(微人事)是一个开源的人力资源管理系统项目。系统采用前后端分离架构,主要技术栈包括:后端:MyBatis前端:VueElement UIAxios数据库:MySQL系统通常包含以下模块:员工管理部门管理职位管理薪资管理权限管理系统管理整体功能已经接近企业级后台系统。vhr(微人事)是一个非常经典的开源人力资源管理系统项目,基于SpringBoot + Vue 前后端分离架构。系统包含:员工管理部门管理权限管理薪资管理。

m0_69484557的博客 486

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

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

LXY_LOVE36的博客 120

无法定位程序输入点

无法定位程序输入点

风无痕 1万+

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2890

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

David的专栏 2万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

获得进程可执行文件的路径: 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、付费专栏及课程。

余额充值