代码之家  ›  专栏  ›  技术社区  ›  UnDiUdin

有没有一种方法可以获得与运行时为peflags设置编译器标志相同的结果?

  •  5
  • UnDiUdin  · 技术社区  · 6 年前

    几年前我在 C0000006 external exception 在某些特定LAN上从共享文件夹运行大型(100+MB)exe时。所以我开始使用中描述的编译器标志 this question .

    在数百个网络中的数百个客户上成功地“执行exe”多年后,我开始遇到PE标志的问题(不知怎么地,在同一台PC上启动时,exe出现崩溃,一次排除一个原因,我经验性地发现,评论这些标志是有效的)。

    不知何故,我找到的解决方法是构建两次我的exe(并让客户选择要部署的exe),第一次是使用这些:

    {$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
    {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP} 
    

    第二个评论。

    这幢楼在楼上很烦人,我想避开它。我不认为有什么办法,但我需要专家的建议:有没有办法“在运行时激活那些标志?”例如,传递命令行参数?

    我考虑的另一个解决方法是在exe启动时本地复制该exe,这样它总是从本地计算机执行,但我担心需要面对的场景,即使技术上很简单。

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  7
  •   David Heffernan    6 年前

    是否有方法在运行时激活这些标志,例如通过传递命令行参数?

    不,没有。这些PE标志由系统加载器处理,结果在执行可执行文件中的任何代码之前确定。

    我考虑的另一个解决方法是在exe启动时本地复制该exe,以便它总是从本地计算机执行。

    这正是这些PE标志所具有的效果。如果可执行文件驻留在网络卷或可移动卷上,则首先将其复制到交换文件(本地文件),然后执行。

    推荐文章