开发的Windows应用程序的安装环境从Win11 23H2切换到24H2时,出现获取电源模式不正确的问题,通过debug代码发现获取电源模式的方法是走的方法编号。由于Win11 24H2中增加了对外提供的方法,而增加的方法放在方法列表中间,导致其后面的方法编号增加,所以这时再通过方法编号调用方法就会出现问题。
找到了原因,那就好下手解决了。只需要通过方法编号在Win11 23H2中找到相关联的真实方法名,那该如何获取dll中的方法列表呢?
通过搜索发现可以用VS自带的dumpbin来导入方法列表。
首先通过everything搜索dumpbin所在的位置,然后在cmd中跳转到该位置。再次通过everything找到powrprof.dll所在位置,然后通过命令 “dumpbin.exe /EXPORTS DLL文件路径” 可以查出方法列表。示例如下:
.\dumpbin.exe /EXPORTS C:\Windows\SysWOW64\powrprof.dll
可以看到相同的方法编号95在23H2下的方法列表如下:
而在24H2下却是另外一个方法
通过写入真实的方法名,该问题完美得到解决。