El problema.
Puede que alguno de vosotros haya desarrollado una aplicación en Delphi, en un pasado muy lejano, que funcionaba a las mil maravillas hasta que el vetusto ordenador con windows XP en el que corría ha pasado a mejor vida. Y os encontráis en la tesitura de tener que comprar un ordenador nuevo en el que, a duras penas, volver a instalar vuestra aplicación “legacy” que funciona tan bien.
Bueno, pues si éste es vuestro caso, estáis en problemas. Por qué??… por múltiples razones
- Windows XP ya no tiene soporte, lo que os deja desprotegidos ante las amenazas de seguridad que aparecen cada día.
- La mayor parte de las aplicaciones modernas ya no corren sobre XP
- Los ordenadores nuevos suelen venir con Windows 10 pre-instalado
- Etc..
Asi que por cualquiera de estas razones llegaréis a la conclusión de que tenéis que hacer funcionar vuestra aplicación sobre Windows 10… Si éste es vuestro caso habéis llegado al sitio adecuado, porque es también el mío, y a continuación os voy a contar como he logrado hacerlo.
Las dificultades.
Mi “legacy” aplicación en Delphi tiene las siguientes características.
- Desarrollada en Delphi 7
- Sobre BAse de datos Paradox y BDE (Borland Database Engine)
- Multiusuario sobre LAN
Tras cada uno de los intentos fallidos se me fueron presentando diferentes dificultades que tuve que ir solventando, concretamente éstas…
Elevación para la ejecución.
En Windows 10 se ha aumentado el nivel de seguridad general, y una de las restricciones que se ha implementado es impedir la ejecución de programas desde directorios del sistema por parte de usuarios no administradores. Como nuestras aplicaciones Delphi hace uso de librerías que residen en algunos de estos directorios, lo primero que tendremos que hacer es activar la ejecución como administradores de nuestra aplicación, lo que en inglés se conoce como “elevation”, y podríamos traducir como elevación.
Esto se hace accediendo a las propiedades de la aplicación (botón derecho sobre el icono desde el que la lanzas), y activando el flag “Ejecutar este programa como administrador”.

Unidades de red para aplicaciones elevadas.
Una vez hemos dado privilegios de ejecución como administrador a nuestra aplicación, nos encontramos con la siguiente restricción de seguridad… En Windows 10 los usuarios Administradores no tienen acceso a las unidades de red.
Sí es un poco contradictorio, pero es así. Si vuestra aplicación tiene que hacer uso de alguna unidad de red, para ella simplemente no existirán, pero existe una solución. Hay que crear un flag en el registro del sistema que permita éste acceso, siguiendo los siguientes pasos que podemos encontrar en la página de soporte de Microsoft.
| https://support.microsoft.com/es-es/help/3035277/mapped-drives-are-not-available-from-an-elevated-prompt-when-uac-is-co |
- En el Editor del registro, busque y, a continuación, haga clic en la subclave del registro siguiente:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
- Haga clic en configuración, haga clic en nuevo y, a continuación, haga clic en valor DWORD (32 bits).
- Nombre de la nueva entrada del registro como EnableLinkedConnections.
- Haga doble clic en la entrada de EnableLinkedConnections del registro.
- En el cuadro de diálogo Editar valor DWORD , escriba 1 en el campo información del valor y, a continuación, haga clic en Aceptar.
- Salga del Editor del registro y, a continuación, reinicie el equipo.

| Tip para usuarios avanzados: Lo mismo se puede hacer con un solo comando:
reg add «HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System» /v «EnableLinkedConnections» /t REG_DWORD /d 0x00000001 /f |
Instalar el Borland Database Engine.
El Borland Database Engine es la libreria de Delphi que permite el acceso a bases de datos legacy (Paradox, DBase). Si eres usuario registrado de alguna de las últimas versiones de Delphi podrás descargarlo directamente desde la web de embarcadero…
| https://cc.embarcadero.com/item/30359 |
En caso contrario se puede buscar por internet con mucha facilidad el fichero “BDEINST.DLL”, e instalarlo ejecutando el siguiente comando en una consola elevada.
| C:\WINDOWS\SYSTEM\REGSVR32.EXE /S CABINST.DLL |
Si todo ha ido bien nos aparecerá una pantalla como la siguiente, para seleccionar en qué lugar instalamos el BDE. EN este paso no hay que cambiar nada, dejamos la opción por defecto.

Consola Elevada.
Muy bien y como consigo una consola elevada??… Pues muy fácil, siguiendo estos sencillos pasos.
- Desde el menú de inicio de Windows accedemos al buscador
- En el buscador podemos buscar cualquier término relacionado con la consola, como “Símbolo del Sistema”, o “cmd”, etc…
- Una vez se muestre en los resultados el icono de la consola, hacemos click derecho con el ratón sobre él, y seleccionarmos “Ejecutar como administrador” en el menú emergente.
- Y voila!!!… ya tenemos nuestra consola elevada.

Y ya está.
En condiciones normales ya deberías tener tu aplicación Delphi “legacy” funcionando en tu flamante nuevo sistema operativo. Si no fuera así existen algunos remedios más esotéricos para situaciones concretas, pero para encontrar la adecuada lo mejor es que investigueis vuestro caso concreto en foros especializados (club delphi, etc…), la web de embarcadero… y Google.
Espero que toda esta información os haya sido de utilidad.