在调查由在Windows 2008终端服务器上运行Delphi 7应用程序的某些用户报告的外部异常C0000006错误时,我发现了一些与此相关的问题以及相关问题。我想知道是否有人拥有适合终端服务器上运行的标准Delphi 7数据库应用程序的这些设置的明确列表。
我看过的问题包括:
到目前为止,我还没有读过这些,我想我应该将以下内容添加到.dpr文件中:
const
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
// Following are already defined in D7's Windows.pas
IMAGE_FILE_RELOCS_STRIPPED = $0001;
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400;
IMAGE_FILE_NET_RUN_FROM_SWAP = $0800;
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED
or IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
or IMAGE_FILE_NET_RUN_FROM_SWAP}
编辑:可能不需要剥离重定位部分,所以这是修订版:
const
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
// Following are already defined in D7's Windows.pas
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400;
IMAGE_FILE_NET_RUN_FROM_SWAP = $0800;
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
or IMAGE_FILE_NET_RUN_FROM_SWAP}
最佳答案
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE}
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED
or IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
or IMAGE_FILE_NET_RUN_FROM_SWAP}
适合您的需求。我怀疑IMAGE_FILE_NET_RUN_FROM_SWAP是处理C0000006所需要的。当您从网络驱动器运行并且该驱动器无法满足请求可执行文件的页面时,通常会发生该错误。
无论哪种方式,其他PE标志都适合您。我会像你一样。
至于IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE是否正确,只有您知道。您的应用是否符合documented on MSDN的要求,才能被视为非传统的终端服务应用?如果是这样,请使用IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE。
关于delphi - 在终端服务器上运行的Delphi 7应用程序的建议PE header 设置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14378674/