我有一个针对Windows 7及其开发的应用程序8.使用C ++ / CLI在VS2010中开发。尝试使用Windows应用认证工具包进行认证时,会显示警告。
Binary analyzer
Warning: The binary analyzer test detected the following errors:
File C:\Program Files (x86)\MyApp\msvcr100.dll has failed the ExecutableImportsCheck check.
File C:\Program Files (x86)\MyApp\msvcp100.dll has failed the ExecutableImportsCheck check.
Impact if not fixed: If the app doesn’t use the available Windows protections, it can increase the vulnerability of the customer's computer to malware.
How to fix: Apply the SAFESEH, DYNAMICBASE, and NXCOMPAT options when you link the app.
如何从我的应用中避免此警告。
答案 0 :(得分:1)
在项目中使用WACK是没有意义的。它用于验证WinRT应用程序,即通过商店发布并在Windows 8.x或Windows Phone上运行的应用程序。他们需要安全地在一个非常有限的沙箱中运行,这个沙盒可以提供一小部分winapi。由于安全性,部署和功耗原因,WACK会对此进行验证。像msvcr100.dll这样的桌面DLL无法满足它们。这些应用程序是使用另一个CRT,vccorlibxxx.dll
构建的您无法使用VS2010,VS2012或更高版本构建此类应用。它也不能在Win7上运行。您只需要停止使用该工具。
更新:看来WACK已在8.1 SDK中更新,以验证桌面应用的Windows徽标要求。这是模糊不清的。从我运行appcert.exe /时显示的命令帮助来判断?在提升的命令提示符下,您必须首先为您的应用程序创建安装程序。然后,您可以使用-apptype desktop
和-setuppath yourinstaller.exe
运行appcert,让它执行验证。一些额外的命令行选项似乎很重要,例如-appusage
。我不知道他们的意思。
请注意,这仅在您需要Windows徽标认证时才有用。徽标计划文档中应该有关于此的其他信息。如果您有Windows徽标计划问题,请考虑与Microsoft联系。