【问题标题】:Manifest for DLL - To check Windows 10 compatibility (Use version helper APIs)DLL 清单 - 检查 Windows 10 兼容性(使用版本帮助程序 API)
【发布时间】:2016-08-17 16:05:03
【问题描述】:

环境:

Visual Studio 2015/Visual C++

操作系统:Windows 10 TH2 10586 / 对应的 Windows SDK


由于 GetVersionEx 在 Windows 8 及更高版本中已弃用,我想使用版本帮助程序 API (IsWindows10OrGreater) 来检测我的 DLL 中的操作系统来决定流程。但是,根据 MSDN 文档,我需要有一个清单(包含支持的操作系统版本的兼容性部分),没有它,即使在 Windows 10 中运行,此 API (IsWindows10OrGreater) 也会返回 false。

我已经添加了一个包含所需兼容性部分的清单,但我仍然无法让它工作。它总是返回假。 (我在 resource.h 中将清单 ID 定义为 2,因为它是 DLL)

为了进行交叉检查,我实现了一个具有相同清单的示例独立应用程序,该应用程序非常适合此版本帮助程序 API。

我需要您的帮助来了解我在 DLL 中缺少什么?不幸的是,网上的讨论都没有讨论 DLL 清单的兼容性。

谢谢,

【问题讨论】:

    标签: windows dll manifest compatibility


    【解决方案1】:

    答案来的有点晚,但我也遇到了类似的问题,请看我的问题here

    问题是清单的兼容性部分在应用于 DLL 时会被忽略,它仅在应用于 EXE 时才有效。

    因此,如果您不控制将使用您的 DLL 的 EXE 并且不能确定它是否具有正确的清单,那么解决它的方法是从 kernel32.dll 文件中获取 ProductVersion。这与 Windows 版本完美对应,看起来相当可靠(MSDN 也推荐使用它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2020-10-16
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多