首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过psapi.dll调用GetModuleFileNameEx不起作用,但为什么?

通过psapi.dll调用GetModuleFileNameEx不起作用的原因可能有以下几点:

  1. 缺少头文件和库文件:需要确保已经包含了psapi.h头文件,并且在链接时添加了psapi.lib库文件。
  2. 函数调用失败:需要检查GetModuleFileNameEx函数的返回值,如果返回值为0,则表示函数调用失败,可以通过调用GetLastError函数获取错误代码,以便进一步排查问题。
  3. 缓冲区不足:GetModuleFileNameEx函数的最后一个参数是一个缓冲区,用于存储模块的完整路径名。如果缓冲区不足以容纳完整路径名,则函数将失败,可以尝试增加缓冲区大小,或者使用GetModuleFileNameEx函数的A或W版本,它们可以自动分配足够大的缓冲区。
  4. 权限问题:需要确保当前进程具有足够的权限来访问目标进程的模块信息。如果当前进程没有足够的权限,则函数将失败。
  5. 目标进程不存在或已经退出:需要确保目标进程仍然存在并且没有退出。如果目标进程已经不存在,则函数将失败。
  6. 参数错误:需要检查传递给GetModuleFileNameEx函数的参数是否正确,特别是hProcess和dwPid参数,需要确保它们指向有效的进程句柄和进程ID。

为了解决这个问题,可以尝试以下方法:

  1. 确保已经包含了psapi.h头文件,并且在链接时添加了psapi.lib库文件。
  2. 检查GetModuleFileNameEx函数的返回值,如果返回值为0,则调用GetLastError函数获取错误代码,以便进一步排查问题。
  3. 尝试增加缓冲区大小,或者使用GetModuleFileNameEx函数的A或W版本,以自动分配足够大的缓冲区。
  4. 确保当前进程具有足够的权限来访问目标进程的模块信息。
  5. 确保目标进程仍然存在并且没有退出。
  6. 检查传递给GetModuleFileNameEx函数的参数是否正确,特别是hProcess和dwPid参数。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

gh0st源码分析与远控的编写(四)

调用的相关api是CreateToolhelp32Snapshot -> Process32First -> OpenProcess -> EnumProcessModules -> GetModuleFileNameEx...-> Process32Next -> CloseHandle     首先调用CreateToolhelp32Snapshot 创建当前进程列表的快照,再调用Process32First获得快照中第一个进程句柄...得到他自身的模块后,GetModuleFileNameEx获得其完整名称。此时就算获取到了进程列表中一个进程信息,再使用Process32Next获得下一个进程,重复以上步骤。    ...枚举第一个模块句柄也就是自身 EnumProcessModules(hProcess, &hModules, sizeof(hModules), &cbNeeded); //得到自身的完整名称 GetModuleFileNameEx...dwLength), LMEM_ZEROINIT|LMEM_MOVEABLE); //接下来三个memcpy就是向缓冲区里存放数据 数据结构是 进程ID+进程名+0+进程完整名+0 //为什么

1K32

用Qt写软件系列三:一个简单的系统工具(上)

网上有解决方案说,可以用GetModuleFileNameEx()来获取。...后来在MSDN在线帮助文档GetModuleFileNameEx()该页面下有评论说:To clarify a bit, this function DOES work to find the module...意思是说,当前进程如果编译为32位,那么在该进程中调用GetModuleFileNameEx()只能查询32位的进程,对于64位进程是一样的道理。...照这字面意思,就是微软在64为系统上模拟了一个32位程序运行的环境,这也解释了,为什么我的电脑上会有两个这样的文件夹: ? 这篇博客讲的很详细,对于是什么、为什么、怎么样都有详细叙述。...为什么这么命名,仔细想想就会发现这样命名其实是自然而然的。上面提到的博客也有说明。       好嘛,余下的事情就很明朗了:判断是否为64位系统,如果是,则读取上述两个位置的信息。

2.5K80
  • windows10 记事本进程 键盘消息钩子 dll注入

    SetWindowsHookEx()的官网文档说了,这个函数只能用于64位程序将64位dll注入64位程序,或32位程序将32位dll注入32位程序,如果我们编写的dll是32位的,那么到时候注入时程序就会卡死(别问我为什么知道...10、点击最上方的生成->生成解决方案,成功的话,找到DLL->x64->Debug这个文件夹,看下有没有DLL.dll这个文件,注意:不是DLL->DLL->x64->Debug这个文件夹,不要问我为什么会知道...CPP.cpp文件添加代码: #include "stdafx.h" #include "windows.h" #include "Psapi.h" //连接了库后引用头文件,EnumProcesses及GetModuleFileNameEx...id获取进程句柄 //第一个参数是输入参数,标识需要获取的权限,这里我们获取PROCESS_QUERY_INFORMATION和PROCESS_VM_READ权限 //因为下面的GetModuleFileNameEx...= NULL) { GetModuleFileNameEx(hProcess, NULL, ProcessName, 1024); //根据进程句柄获取到进程完整的名称,如C:\Windows

    1.7K10

    .NET 中 GetProcess 相关方法的性能

    // NativeMethods [DllImport("psapi.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError...另外,GetProcesses 方法就要复杂得多,其核心调用的是 ProcessManager.GetProcessInfos 方法。...方法很长,其大体思路是获取当前计算机上的线程列表,然后将线程所在的进程储存到哈希表中(相当于去重),随后返回此哈希表的数组副本。...static extern int GetCurrentProcessId(); 另外,有个有意思的现象: Windows的PID为什么是4的倍数 - 开源中国社区 WINDOWS进程或线程号为什么是4...欢迎转载、使用、重新发布,务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布

    45330

    枚举进程中的模块

    解析进程地址空间中的模块 这个方法首先通过OpenProcess函数获取对应进程的句柄,然后调用EnumProcessModules枚举进程地址空间中当前存在的模块,这个函数会返回一个HMODULE句柄的数组...,我们遍历这个数组,对其中的每个句柄调用GetModuleFileNameEx(很多模块GetModuleFileName获取不到,具体原因我没有深入研究)获取对应的文件路径。...MAX_PATH*sizeof(TCHAR)); //在这如果使用GetModuleFileName,有的模块名称获取不到,函数返回无法找到该模块的错误 if ( GetModuleFileNameEx...在调用这个函数时需要注意下面几点: 1....NT_SUCCESS(status)) { return; } //在这为了验证之前说的,通过这两句输出发现他们的结果相同 printf("%d\n",

    1.6K20

    回调在事件中的妙用 ### 回调: 回头调用,函数 A 的事先干完,回头再调用函数 B。事件中的使用。通过以上方式,可以中其本模块中调用其它模块变量,有些细节与严格意义上回调不一致,基本思想一致

    . ### 回调: 回头调用,函数 A 的事先干完,回头再调用函数 B。 函数 A 的参数为函数 B, 函数 B 被称为回调函数。...至于为何要用参数的形式传入,而不是直接在 A 中直接调用 B 函数,主要是为了变量的灵活性考虑。 为何要使用回调? 比较常见的情况是两个不同模块之间需要相互调用 事件中的使用。...; } } } } ---- 其中涉及到两个函数的调用问题: Control.ts: public OnButttonWasPressed(cmdType...通过以上方式,可以中其本模块中调用其它模块变量,有些细节与严格意义上回调不一致,基本思想一致。

    1.6K30

    推荐官方开源 PInvoke 库 包含大量 win32 封装

    调用 win32 库的时候,小伙伴会遇到的问题是不知道对应的 win32 函数应该如何写。或者在网上抄了的代码的实现都有些诡异,想要自己封装发现工作量太大。...第一个就是减少从网上复制粘贴有趣的 PInvoke 调用实现,其次是质量上能保底。虽然官方的实现也不够完美,例如 User32 的 GetWindowLong 方法依然有坑。...Management newdev.dll PInvoke.NewDev Device and Driver Installation ntdll.dll PInvoke.NTDll Windows NTDll psapi.dll...在 dotnet 里面使用库都是统一使用 NuGet 的方法,在 NuGet 里面按照自己的需要安装对应的库就可以了 如我想要调用 Kernel32 的 CreateProcess 方法,这个方法里面包含了很多结构体等的实现...ItemGroup> 此时我就可以通过

    1.3K20

    史上最实用的Android切片应用库XAOP使用指南

    ,当然你也可以修改key的自动生成规则,你只需要调用XAOP.setICacheKeyCreator即可。 2.标注的方法一定要有返回值,否则内存缓存切片将不起作用。...2.如果不调用XAOP.setInterceptor设置切片拦截的拦截器的话,自定义拦截切片将不起作用。...3.问:为什么我编译都通过了,但是使用任何一个切片都没有起任何作用? 答:这里可能的原因有两个。 1.你使用的XAOP版本和你的项目版本不匹配导致。...apply plugin: 'com.xuexiang.xaop' //引用xaop插件 使用的问题 1.问:为什么我使用@SingleClick标注点击的方法不起作用?...答:被@SingleClick标注的方法中,一定要有点击控件View作为方法参数,否则将不起作用。 2.问:为什么我使用@Permission标注的方法,返回值失效了?

    1K60

    List.append() 在 Python 中不起作用,该怎么解决?

    以下是一些可能导致 List.append() 方法不起作用的情况:1. 变量重新赋值在 Python 中,列表是可变对象,也就是说,它们可以通过引用进行修改。...列表作为函数参数另一个导致 List.append() 方法不起作用的常见情况是将列表作为函数的参数传递。在 Python 中,函数参数传递是通过对象引用实现的。...在函数内部,我们对 lst 调用了 append() 方法,将 element 添加到列表末尾。由于函数参数传递是通过引用实现的,所以对 lst 的修改会影响原始列表 my_list。3....如果你需要对列表进行修改,处理的是不可变对象,那么你需要考虑使用其他适合的数据结构或方法。结论List.append() 方法在 Python 中通常是一个方便且常用的方法,用于向列表末尾添加元素。...通过理解这些问题并采取适当的措施,你可以更好地使用 List.append() 方法并避免潜在的错误。

    2.5K20

    Spring声明式事务的一个注意点及原理简析

    虽然抛出异常,事务未回滚,操作后数据改变了。 为什么在orderService的addOrderWrapper()方法内部调用addOrder(),报运行时异常时就不会回滚了呢?...实际上,在第一种情况中,程序是通过orderService的代理类上调用addOrder()方法的,这样,与该方法相关的拦截器就会对请求进行拦截处理,提供相应的事务处理机制;而在第二种情况下,addOrder...()方法虽然仍然有@Transaction注解,仅仅是在orderService上的直接调用,而不是通过代理类调用,伪代码的形式展现如下: 第一种情况: ProxyFactory factory =...transactionInterceptor); OrderService proxy = (orderService) factory.getProxy(); proxy.addOrder();//通过代理调用...第二种情况: 同this.addOrder();//直接通过this调用,事务拦截方法不起作用

    58260

    Spring声明式事务的一个注意点及原理简析

    虽然抛出异常,事务未回滚,操作后数据改变了。 为什么在orderService的addOrderWrapper()方法内部调用addOrder(),报运行时异常时就不会回滚了呢?...实际上,在第一种情况中,程序是通过orderService的代理类上调用addOrder()方法的,这样,与该方法相关的拦截器就会对请求进行拦截处理,提供相应的事务处理机制;而在第二种情况下,addOrder...()方法虽然仍然有@Transaction注解,仅仅是在orderService上的直接调用,而不是通过代理类调用,伪代码的形式展现如下: 第一种情况: ProxyFactory factory =...transactionInterceptor); OrderService proxy = (orderService) factory.getProxy(); proxy.addOrder();//通过代理调用...第二种情况: 同this.addOrder();//直接通过this调用,事务拦截方法不起作用

    81130

    context:component-scan标签的use-default-filters属性的作用以及原理分析

    一、背景   我们在Spring+SpringMVC+Mybatis的集成开发中,经常会遇到事务配置不起作用等问题,那么本文就来分析下出现这种问题可能的原因以及解决方式。...annotation" expression="org.springframework.stereotype.Controller"/> 这是因为什么呢...component-scan>的use-default-filters属性,则默认为true,在创建ClassPathBeanDefinitionScanner时会根据use-default-filters是否为true来调用如下代码...exclude-filter 进行黑名单过滤,然后通过include-filter 进行白名单过滤,否则默认排除。...当我们进行上面的配置时,SpringMVC容器会把service、dao层的bean重新加载,从而造成新加载的bean覆盖了老的bean,事务的AOP代理没有配置在spring-mvc.xml配置文件中

    47940

    如何使用DMAIC识别六西格玛失效的原因?

    说六西格玛不起作用的反对者可能是不耐烦并开始跳过步骤,或者可能是由于缺乏支持。关键是如果不满足正确的条件,您将无法实现项目的预期目标。将上述失败归咎于六西格玛是不公平的。...这就像说锻炼不起作用,因为你已经尝试过锻炼,你的目标还没有实现,而你的饮食习惯已经失控。开始锻炼前的第一步是遵循健康饮食,减少卡路里。所以,如果你不按照指示,你就不会减肥成功。...六西格玛可以适用于每个组织,无论你的企业或公司规模大小,你必须致力于这项事业--就像遵循一个好的锻炼计划来锻炼身体一样。...衡量标准:您是否有基线当前数据来支持您为什么需要使用这些方法?数据准确吗?您是否有日期的图表来支持您的主张?...分析:您是否通过管理分析了数据并通过查找故障所在的过程,也许使用了根本原因分析工具以及帕累托图?改进:通过以上来确定哪个是最佳选择并尝试查看结果。

    54540

    vue事件发射与接收(可实现页面传值和非父子组件传值)

    1).给data添加一个 名字为eventhub 的空vue对象,就可以在任何组件都可以调用事件发射接收的方法了,在main.js中添加: new Vue({ el: '#app', router...eventHub: new Vue() }, render: h => h(App), components: { App }, template: '' }) 2).在home组件内调用事件接受参数...$on('事件名称', (data)=>{ console.log('接受到的参数:'+data) } ) }, 3)在adress组件内调用事件触发 ($emit分发) //通过...off('事件名称')取消了事件,发现再次调用this. ? on监听时不起作用了,不明白为什么?...如果不取消监听就会监听几遍就会调用几遍方法,显然不合理,本人只是在项目中不让其取消监听的情况下做了次判断,让this. ? on只走一次,不明所以然!希望哪位大神指出错误!!!

    1.6K40

    Vue webpack打包后,css样式发生改变或不起作用

    为什么打包后会出现这样的结果呢!不太理解!...scoped属性的父级组件,可以修改子组件样式 4)加了scoped属性的父级组件,也可以强行控制加了scoped属性的子组件,方法是:.a >>> .b或者css预处理中的 .a /deep/ 二.css样式不起作用...css-loader; 没写style-loader则build文件会生成,你会发现页面中js不起作用; 没写css-loader则会直接报错:’You may need an appropriate...结合网上分享以及’You may need an appropriate loader to handle this file type.’报错信息,意味着css-loader的存在使得在js中通过require...或者import引入css成功;通过css-loader,可以实现在js文件中通过require的方式,来引入css。

    5K30
    领券