有没有办法获得与在运行时为 PEFlag 设置编译器标志相同的结果?
is there a way to obtain the same result than set compiler flags at runtime for PEFlags?
年前,当 运行 某些特定 LAN 上共享文件夹中的大型 (100+MB) exe 时,我无意中发现了 C0000006 external exception
。所以我开始使用 this question.
中描述的编译器标志
经过多年对数百个网络中数百个客户的成功 "execution of exe",我开始遇到 PE 标志问题(不知何故,exe 在同一台 pc 上启动时崩溃,我凭经验一次排除一个原因发现评论这些标志是有效的)。
我找到的解决方法是构建我的 exe 两次(并让客户选择部署哪个),第一次使用这些:
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
第二个评论那些。
这座建筑物的开销很烦人,我想避免它。我认为没有办法,但我想请教专家:有没有办法 "activate those flags at runtime?" 例如传递命令行参数?
我想到的另一个解决方法是在 exe 启动时将 exe 复制到本地,以便它始终从本地计算机执行,但我担心我需要面对的场景,即使从技术上讲它很简单。
谢谢。
Is there a way to activate these flags at runtime, for example by passing a command line parameter?
不,没有。这些 PE 标志由系统加载程序处理,并且在执行可执行文件中的任何代码之前确定结果。
Another workaround I thought of is to copy locally the exe as the exe starts, so that it is always executed from the local machine.
这正是这些 PE 标志的作用。如果可执行文件驻留在网络卷或可移动卷上,则首先将其复制到交换文件(本地文件),然后执行。
年前,当 运行 某些特定 LAN 上共享文件夹中的大型 (100+MB) exe 时,我无意中发现了 C0000006 external exception
。所以我开始使用 this question.
经过多年对数百个网络中数百个客户的成功 "execution of exe",我开始遇到 PE 标志问题(不知何故,exe 在同一台 pc 上启动时崩溃,我凭经验一次排除一个原因发现评论这些标志是有效的)。
我找到的解决方法是构建我的 exe 两次(并让客户选择部署哪个),第一次使用这些:
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
第二个评论那些。
这座建筑物的开销很烦人,我想避免它。我认为没有办法,但我想请教专家:有没有办法 "activate those flags at runtime?" 例如传递命令行参数?
我想到的另一个解决方法是在 exe 启动时将 exe 复制到本地,以便它始终从本地计算机执行,但我担心我需要面对的场景,即使从技术上讲它很简单。
谢谢。
Is there a way to activate these flags at runtime, for example by passing a command line parameter?
不,没有。这些 PE 标志由系统加载程序处理,并且在执行可执行文件中的任何代码之前确定结果。
Another workaround I thought of is to copy locally the exe as the exe starts, so that it is always executed from the local machine.
这正是这些 PE 标志的作用。如果可执行文件驻留在网络卷或可移动卷上,则首先将其复制到交换文件(本地文件),然后执行。