我正在使用delphi 7。
带有DCEF的CEF版本为3.1547.1412。
问题
在带有Windows 2008 R2的计算机上,有时我的应用程序加载时,它会以类型 bex 的事件崩溃。
我只能解决崩溃在Windows上停用DEP ,为此,我使用了提示命令:
bdcedit /set nx AlwaysOff
,但这不是解决方案。
我不能在其服务器上迫使用户 desable dep。
这是AppCrash报告(在葡萄牙语中):
Assinatura do problema:
Nome do Evento de Problema: BEX
Nome do Aplicativo: MyExecutable.exe
Versão do Aplicativo: 1.1.0.1
Carimbo de Data/Hora do Aplicativo: 2a425e19
Nome do Módulo de Falhas: dhcpcsvc6.DLL
Versão do Módulo de Falhas: 6.1.7601.17970
Carimbo de Data/Hora do Módulo de Falhas: 50745f7c
Deslocamento de Exceção: 00001730
Código de Exceção: c0000005
Dados de Exceção: 00000008
Versão do sistema operacional: 6.1.7601.2.1.0.18.10
Identificação da Localidade: 1046
Informações Adicionais 1: a7aa
Informações Adicionais 2: a7aa91f17ea749d42a4de3b390fa5b3d
Informações Adicionais 3: a7aa
Informações Adicionais 4: a7aa91f17ea749d42a4de3b390fa5b3d
有人可以帮助我找到问题的根源或有关为什么会发生的一些信息?
在评论中,您链接到一个论坛,该论坛解释说,铬有意通过调用SetProcessDEPPolicy
来预防数据执行。众所周知,DEP会干扰Delphi 7.在那一句白中,我看到了三种解决方案(以降序列出顺序列出):
- 升级到不到十年的Delphi版本。您会得到一个dep-ware的RTL。
- 如论坛中所述,请自己编译铬并排除与DEP相关的代码。例如,您可以通过在 process_mitigations.cc 中编辑
ApplyProcessMitigationsToCurrentProcess
来做到这一点,以使其忽略MITIGATION_DEP
和MITIGATION_DEP_NO_ATL_THUNK
标志。 - 正如您已经发现的那样,运行bcdedit。当您这样做时,您可以在操作系统级别禁用DEP,这会迫使Chromium对
SetProcessDEPPolicy
的电话失败。
根据此文章:
-
delphi应用程序和tsaware标头标志
-
http://support.microsoft.com/kb/2279689
我添加了以下指令,以添加到标题tsaware信息:
{$SETPEOPTFLAGS $8000}
经过一些详尽的测试,问题停止了。