1

我有一个为 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. 

如何从我的应用程序中避免此警告。

4

1 回答 1

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然后,您可以使用和运行 appcert 以-setuppath yourinstaller.exe使其执行验证。一些额外的命令行选项似乎很重要,例如-appusage. 我不知道他们是什么意思。

请记住,这仅在您需要 Windows 徽标认证时才有用。徽标程序文档中应该有关于此的附加信息。如果您有 Windows 徽标计划问题,请考虑联系 Microsoft。

于 2014-10-14T14:44:52.550 回答