64位Delphi桌面应用程序是否可以通过Windows 8.1认证

Dal*_*kar 5 delphi windows-8 app-certification-kit windows-8.1

据我所知,32位Delphi桌面应用程序无法通过Windows 8.1认证因为缺少SafeSEH,桌面Delphi应用程序是否可以通过Windows 8认证

但是64位Delphi桌面应用程序呢?他们是否可以通过其他要求,因为他们不必满足SafeSEH要求?

如果答案是肯定的,那么是否需要将任何编译器/链接器设置设置为特定值,以及所需的最小Delphi版本(显然至少为XE2).

我特别考虑了认证要求的第3部分.

3. Apps支持Windows安全功能

Windows操作系统具有许多支持系统安全性和隐私的功能.应用必须支持这些功能才能保持操作系统的完整性.编译不当的应用程序可能会导致缓冲区溢出,从而导致拒绝服务或允许恶意代码执行.

  • 3.1.您的应用不得使用AllowPartiallyTrustedCallersAttribute(APTCA)来确保对强名称程序集的安全访问

  • 3.2您的应用必须使用/ SafeSEH标志进行编译,以确保安全的异常处理(仅限32位)

  • 3.3必须使用/ NXCOMPAT标志编译您的应用程序以防止数据执行

  • 3.4必须使用/ DYNAMICBASE标志编译您的应用程序以进行地址空间布局随机化(ASLR)

  • 3.5您的应用不得读/写共享PE部分

Dav*_*nan 6

Delphi难以满足的唯一要求是/SafeSEH.但这不适用于64位应用程序.

Windows x64 ABI使用与x86使用的完全不同的异常模型.

x86异常模型是基于堆栈的.该/SafeSEH标志适用于基于堆栈的异常.x64 ABI使用基于表的异常.并且/SafeSEH根本不适用.这解释了您引用的仅32位文本.

因此很容易满足3.1和3.5.不要做那些事情.3.3和3.4只是您可以使用的PE标志{$SetPEFlags}.然后3.2不适用,你回家了.