LaB*_*cca 5 delphi compiler-flags delphi-10-seattle
几年前,我C0000006 external exception在一些特定局域网上从共享文件夹运行一个大型(100 + MB)exe时偶然发现了.所以我开始使用这个问题中描述的编译器标志.
在数百个网络中的数百个客户多年成功"执行exe"后,我开始遇到PE标志的问题(不知何故,exe在同一台PC上启动时崩溃,一次排除一个原因,我根据经验发现评论这些标志工作).
不知怎的,我找到的解决方法是两次构建我的exe(并让客户选择部署哪一个),第一个用这些:
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
Run Code Online (Sandbox Code Playgroud)
第二个评论那些.
这个建筑开销很烦人,我想避免它.我不认为有办法,但我要求专家建议:有没有办法"在运行时激活那些标志?" 例如,传递命令行参数?
我想到的另一个解决方法是在exe开始时本地复制exe,这样它总是从本地机器执行,但我担心我需要面对的场景,即使从技术上讲它很简单.
谢谢.
有没有办法在运行时激活这些标志,例如通过传递命令行参数?
不,那里没有.这些PE标志由系统加载器处理,并且在执行可执行文件中的任何代码之前确定结果.
我想到的另一个解决方法是在exe启动时本地复制exe,这样它总是从本地机器执行.
这正是这些PE旗帜所具有的效果.如果可执行文件驻留在网络卷或可移动卷上,则首先将其复制到交换文件(本地文件),然后执行.