2016-08-17 60 views
0

环境:清单的DLL - 要检查的Windows 10兼容(使用版本助手的API)

的Visual Studio 2015 /的Visual C++

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


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

我已添加清单与所需的兼容性部分,但我无法仍然得到它的工作。它总是返回false。 (我在resource.h中定义了清单ID,因为它是DLL)

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

我需要你的帮助,了解我在DLL中缺少的是什么?不幸的是,在线讨论没有一个关于DLL兼容性的讨论。

感谢,

回答

0

答案来得有点晚了,但我也有类似的问题,请参阅我的问题here

问题是应用于DLL时忽略清单的兼容性部分,它只适用于EXE时才起作用。

因此,如果您不控制将使用您的DLL的EXE,并且无法确定它具有正确的清单,则解决此问题的方法是从kernel32.dll文件获取ProductVersion。这与Windows版本完美对应,似乎非常可靠(在MSDN上也推荐使用)。