delphi delphi-7 terminal-services

¿Configuraciones de encabezado de PE recomendadas para la aplicación Delphi 7 que se ejecuta en el servidor de terminal?



delphi-7 terminal-services (1)

Al investigar los errores de la excepción externa C0000006 informados por algunos usuarios que ejecutan una aplicación Delphi 7 en un servidor de terminal de Windows 2008, encontré varias preguntas sobre este y otros problemas relacionados. Me pregunto si alguien tiene una lista definitiva de estas configuraciones que sería apropiada para una aplicación de base de datos Delphi 7 estándar que se ejecuta en un servidor de terminal.

Las preguntas que he mirado incluyen:

Tan lejos de leer esto, estoy pensando que debería agregar lo siguiente al archivo .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}

Edición: eliminar la sección de reubicación es probablemente innecesario, así que aquí está la versión revisada:

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}

está bien para sus necesidades. Sospecho que IMAGE_FILE_NET_RUN_FROM_SWAP es lo que necesita para lidiar con C0000006. Ese error suele ocurrir cuando se ejecuta desde una unidad de red y la unidad no puede satisfacer una página en la solicitud del ejecutable.

Las otras banderas de PE están bien para ti de cualquier manera. Lo tendría como tú.

En cuanto a si IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE tiene razón, solo tú lo sabes. ¿Su aplicación cumple con los requisitos para ser considerada una aplicación no legada para servicios de terminal, como se documenta en MSDN ? Si es así, use IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE.