1
ysc3839 2023-01-01 19:00:03 +08:00 via Android
试试修复系统文件或者重装系统?
|
2
GeruzoniAnsasu 2023-01-01 19:10:14 +08:00
根据一个找到的表格: https://j00ru.vexillium.org/blog/win7_vs_win8/exports/KernelBase.dll.html
GetFileVersionInfoExA 这个 API 在 win7 以上版本直接从 kernelbase.dll 导出 而根据 MSDN 的文档: https://learn.microsoft.com/zh-cn/windows/win32/api/winver/nf-winver-getfileversioninfoexa 这个 API 由 Api-ms-win-core-version-l1-1-0.dll 导出 所以猜测是新版本环境链接了 kernelbase.dll 在 win7 上无法找到入口导致的。 可以先试试能不能在程序目录下放一个同名 dll 转发一下 API 调用,如果不行的话尝试直接改导入表指向 win7 版本的 dll |
3
maolaohei 2023-01-01 19:11:51 +08:00 via Android
你可以尝试安装一下 vc 运行库
|
4
jimages 2023-01-01 19:19:21 +08:00
开兼容模式了?
|
5
Apol1oBelvedere OP @ysc3839 已重装官方版 Win7 未起作用。
@maolaohei 2008-2019 所有 x86 、x64 vc 运行库安装后未起作用。 @jimages 开启兼容模式未起作用。 @GeruzoniAnsasu 在程序目录下放一个同名 Api-ms-win-core-version-l1-1-0.dll 未起作用。 |
6
GeruzoniAnsasu 2023-01-01 19:47:42 +08:00
@Apol1oBelvedere 用 dependency walker (
https://www.dependencywalker.com https://github.com/lucasg/Dependencies ) 看一下,能看到缺少的 API 以及 dll 。 如果导入 dll 的名字写了绝对路径,那么在同目录下同名 dll 就劫持不了。然后就算用同名劫持的办法你也必须保证提供一个有相同签名 API 的文件 |
7
ysc3839 2023-01-01 19:50:09 +08:00 via Android
@Apol1oBelvedere 给一下报错的完整截图?以及看看程序目录下有没有 version.dll ,有的话删除试试?
|
8
Apol1oBelvedere OP |
9
ysc3839 2023-01-01 20:43:54 +08:00 via Android
@Apol1oBelvedere 不可能不能删除,这个是系统自带的 DLL
|
10
felixlong 2023-01-01 20:49:57 +08:00
换用老版本的 visual studio 编译试试。最新版的 visual studio 编译出的程序应该不支持 Win7 了。
|
11
felixlong 2023-01-01 21:04:11 +08:00
如果要用最新的 visual studio 的话。 好像需要安装对应版本的 redistributable.
“Installing the VS2019 redistributable” |
12
patrickyoung 2023-01-01 21:15:35 +08:00 via iPhone
这个大概率是新版本 vs 在 w10+版本编译出来不兼容了,重新获取一个发行包吧。如果是 Qt 写的应用,装个 Qt 试试。
|
13
qscasdqwezxc 2023-01-01 21:19:00 +08:00 via Android
修改导入表
|