gpt4 book ai didi

c++ - Embarcadero Builder C++ XE5 数据执行预防编译器

转载 作者:行者123 更新时间:2023-11-28 06:31:39 25 4
gpt4 key购买 nike

希望这不是一个明显的问题。由于 Windows 2008 R2 服务器上的 32 位 exe 缺少数据执行保护 (DEP) 支持,我最近遇到了异常。将 exe 添加到 DEP 排除列表,作为解决方法解决了该问题。

我想在支持 DEP 的情况下进行编译,但在 Builder XE5 c++ 中找不到有关如何执行此操作的任何指示。这可能吗?我发现了一些关于 Delphi 的模糊建议,但没有确定的建议。

有什么想法吗?

最佳答案

据我所知,C++Builder 没有与 Delphi 相同的 DEP 选项。你将不得不要么

  1. 使用外部 PE 编辑器修改已编译 EXE 文件的 PE 标志。

  2. 在运行时调用 SetProcessDEPPolicy(),例如在 main()/Winmain() 函数的顶部:

    void EnableDEP()
    {
    const DWORD PROCESS_DEP_ENABLE = 0x00000001;
    typedef BOOL WINAPI (*LP_SPDEPP)(DWORD);

    LP_SPDEPP SetProcessDEPPolicy = (LP_SPDEPP) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "SetProcessDEPPolicy");
    if (SetProcessDEPPolicy != NULL)
    SetProcessDEPPolicy(PROCESS_DEP_ENABLE);
    }


    int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    EnableDEP();
    ...
    }

关于c++ - Embarcadero Builder C++ XE5 数据执行预防编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com