3

我将 DCEF3 ( https://code.google.com/p/dcef3/ ) 与 Delphi 7 一起使用。

嵌入 DCEF 的 CEF 版本是 3.1547.1412。

问题

在装有 Windows 2008 R2 的机器上,有时当我的应用程序加载时,它会因BEX类型的事件而崩溃。

我只能解决在 windows 上停用 DEP的崩溃,为此我使用了提示命令:

bdcedit /set nx AlwaysOff

但这不可能是解决方案。

我不能强迫我的用户在他们的服务器上禁用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

有人可以帮助我找到问题的根源或有关为什么会发生这种情况的一些信息吗?

4

2 回答 2

3

在评论中,您链接到一个论坛,该论坛解释了 Chromium通过调用SetProcessDEPPolicy. 众所周知,DEP 会干扰 Delphi 7。因此,我看到了三种解决方案(按优先顺序降序排列):

  1. 升级到不到十年的 Delphi 版本。您将获得一个支持 DEP 的 RTL。
  2. 论坛里提到,自己编译Chromium,排除DEP相关代码。例如,您可以通过ApplyProcessMitigationsToCurrentProcessprocess_mitigations.cc中进行编辑以使其忽略MITIGATION_DEPandMITIGATION_DEP_NO_ATL_THUNK标志来做到这一点。
  3. 如您所见,运行bcdedit 。当你这样做时,你会在操作系统级别禁用 DEP,这会迫使 Chromium 的调用SetProcessDEPPolicy失败。
于 2014-01-21T17:41:31.140 回答
0

根据这篇文章:

我添加了以下指令以将 TSAWARE 信息添加到标题中:

{$SETPEOPTFLAGS $8000}

经过一些详尽的测试后,问题停止了。

于 2014-01-22T18:15:51.943 回答