gpt4 book ai didi

c++ - NSIS:ExecWait 如何处理否则会崩溃的 exe

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

我有一个 exe 需要 VC++ 环境才能运行,否则会崩溃。

如果我在非 VC++ 环境中从命令行或 C++ 代码运行它 CreateProcess功能,它显然会崩溃,系统错误消息如下所示

enter image description here

但是当我在 NSIS 脚本中从 ExecWait 执行它时,它只是执行它。该 exe 肯定仍在崩溃,但未显示任何错误消息。

如果我是对的,ExecWait 也会在内部使用 CreateProcess 函数。那为什么会有这种差异呢?

CreateProcess 函数中是否有任何标志需要传递才能获得此行为?

最佳答案

NSIS 不传递任何特殊标志:

StartUp.cb=sizeof(StartUp);
if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &StartUp, &ProcInfo)) ...

但在达到这一点之前,它会执行 SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS); 这可能会影响事情。

要记住的另一件事是 NSIS 脚本中的 SetOutPath 指令也会更改进程工作目录,因此如果您将其设置为那些 dll 存在的路径,子进程应该将它们拾取为嗯……

关于c++ - NSIS:ExecWait 如何处理否则会崩溃的 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25074862/

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