DLL的清单 - 检查Windows 10兼容性(使用版本帮助程序API)

时间:2016-08-17 16:05:04

标签: windows dll manifest compatibility

环境:

Visual Studio 2015 / Visual C ++

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

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

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

为了交叉检查,我实现了一个带有相同清单的示例独立应用程序,该版本适用于此版本助手API。

我需要你的帮助才能理解我在DLL中缺少的内容?遗憾的是,在线讨论的所有讨论都没有讨论DLL清单的兼容性。

谢谢,

1 个答案:

答案 0 :(得分:0)

答案有点迟了,但我遇到了类似问题,请参阅我的问题here

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

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