64位Delphi桌面应用程序可以通过Windows 8.1认证 [英] Can 64bit Delphi desktop application be certified for Windows 8.1

查看:265
本文介绍了64位Delphi桌面应用程序可以通过Windows 8.1认证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,32位Delphi桌面应用程序无法通过

As far as I know 32bit Delphi desktop applications cannot be certified for Windows 8.1 due lack of SafeSEH via Can a desktop Delphi application be certified for Windows 8

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

But what about 64bit Delphi desktop applications? Can they pass other requirements, since they don't have to satisfy SafeSEH requirement?

如果答案为是,是否有任何编译器/链接器设置必须设置为特定值,什么是最低限度的Delphi版本(显然至少是XE2)。

Are there any compiler/linker settings that have to be set to specific values if the answer is yes, and what is minimum Delphi version needed (obviously at least XE2).

我特别考虑了认证要求的第3节。

I am specifically considering section 3 of certification requirements.

3。应用程序支持Windows安全功能

Windows操作系统具有许多支持系统安全和隐私的功能。应用程序必须支持这些功能以维护操作系统的完整性。不正确编译的应用程序可能导致缓冲区超限,从而导致拒绝服务或允许恶意代码执行。

The Windows operating system has many features that support system security and privacy. Apps must support these features to maintain the integrity of the operating system. Improperly compiled apps could cause buffer overruns that can, in turn, cause denial of service or allow malicious code execute.


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

  • 3.1. Your app must not use AllowPartiallyTrustedCallersAttribute (APTCA) to ensure secure access to strong-named assemblies

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

3.2 Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling (32bit only)

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

3.3 Your app must be compiled using the /NXCOMPAT flag to prevent data execution

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

3.4 Your app must be compiled using the /DYNAMICBASE flag for address space layout randomization (ASLR)

3.5您的应用不能读取/写共享PE部分

3.5 Your app must not Read/Write the Shared PE Sections

推荐答案

与德尔福会面是 / SafeSEH 。但这不适用于64位应用程序。

The only requirement that is hard to meet with Delphi is /SafeSEH. But that does not apply to 64 bit apps.

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

The Windows x64 ABI uses a completely different exception model from that used by x86.

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

The x86 exception model is stack based. The /SafeSEH flag applies to stack based exceptions. The x64 ABI uses table based exceptions. And /SafeSEH is simply not applicable. Which explains the 32 bit only text that you quoted.

所以很容易达到3.1和3.5。不要做那些事情3.3和3.4只是PE标志,您可以使用 {$ SetPEFlags} 。然后3.2不适用,你在家。

So it's easy to meet 3.1 and 3.5. Don't do those things. And 3.3 and 3.4 are just PE flags that you can set using {$SetPEFlags}. Then 3.2 does not apply and you are home.

这篇关于64位Delphi桌面应用程序可以通过Windows 8.1认证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆