¿Qué es un objeto OLE? — Incrustación, vinculación y las trampas de los documentos empresariales

· Actualizado el: · · Windows, OLE, COM, Office, Access, Desarrollo en Windows, Activos heredados

Historial de revisiones (primera versión, publicada el 28 Aug 2026)
Primera publicación

«Hice doble clic en una tabla de una especificación de Word y el menú se convirtió en el de Excel». Eso es lo que ocurre cuando la tabla se coloca en el documento no como una imagen simple, sino como un objeto OLE.

OLE significa Object Linking and Embedding (vinculación e incrustación de objetos). Integra en un documento contenedor datos de documento creados por otra aplicación, ya sea por incrustación o por vinculación. Técnicamente, la entidad es un objeto COM que se puede incrustar en un documento o vincular a él.12

El punto de partida para entenderlo es la pregunta «¿dónde están los datos propiamente dichos?». Una vez eso queda claro, se puede ordenar por qué los documentos crecen, por qué los vínculos se rompen al trasladar un servidor y por qué una tabla puede verse y, aun así, no editarse.

Este artículo se dirige al personal de informática de pequeñas y medianas empresas y a los desarrolladores de aplicaciones empresariales. Empieza comparando la incrustación y la vinculación, y después pasa a las operaciones cotidianas, a las correcciones según el síntoma y a las precauciones de Access y de seguridad. Los mecanismos internos como COM y el almacenamiento estructurado se reúnen en la sección 7, y las decisiones sobre explotación y diseño futuros en la sección 8.

1. Primero la conclusión: incrustar es una «copia dentro del documento», vincular es una «referencia a otra ubicación»

La diferencia entre incrustar y vincular es dónde se almacenan los datos propiamente dichos. La portabilidad, el tamaño del archivo y el modo en que ocurren las actualizaciones se siguen todos de esa diferencia.3

Punto de comparación Incrustación (Embedding) Vinculación (Linking)
Dónde viven los datos propiamente dichos Dentro del documento contenedor En el origen del vínculo, normalmente un archivo aparte
Lo que el documento almacena Los datos mismos e información de gestión, y normalmente una caché de presentación Información de gestión como el nombre y la ubicación del origen y el ajuste de actualización, y normalmente una caché de presentación
Cuando cambian los datos originales La copia incrustada no se actualiza Pueden reflejarse según el ajuste de actualización del vínculo
Cuando se edita el objeto Se edita la copia dentro del documento; los datos originales no se ven afectados Se editan los datos en el origen del vínculo
Tamaño del documento En general mayor que al vincular el mismo contenido, porque mantiene un duplicado de los datos Más fácil de mantener pequeño, porque los datos no se guardan dentro del documento
Entrega del documento a otro PC Independiente del archivo original, pero editar exige la aplicación de origen El origen del vínculo también debe ser alcanzable desde el PC receptor
Precauciones principales Hinchazón, dependencia de la aplicación de origen Vínculos rotos, ajustes de actualización, dependencia de la aplicación de origen

La incrustación conviene cuando se quiere que el documento sea independiente del archivo original. La vinculación conviene cuando varios documentos comparten los mismos datos y se quiere que los cambios del original se reflejen. Las actualizaciones de vínculo, no obstante, no son necesariamente automáticas. Si son automáticas o manuales lo decide un ajuste del lado del documento.456

La diferencia entre incrustar y vincularLa incrustación almacena por completo los datos propiamente dichos dentro del documento contenedor, lo que hace el documento autónomo pero más grande, mientras que la vinculación coloca en el documento solo una referencia, el ajuste de actualización y normalmente información de presentación, y los datos propiamente dichos permanecen en el archivo de origen, de modo que el documento se mantiene pequeño y los cambios del origen pueden reflejarse según el ajuste de actualización del vínculo (automático o manual)Documento contenedor (documento de Word, etc.)Incrustación: almacena los datos mismosVinculación: referencia, ajustes y (normalmente) info de presentaciónAutónomo pero más grandeArchivo de origen del vínculo (los datos viven aquí)Los cambios del origen pueden reflejarse (según el ajuste)

Figura 1: Si el documento mantiene los datos mismos o referencia datos en otra ubicación. Esta diferencia determina las propiedades de tamaño, actualización y entrega.

«Los datos están dentro del documento» y «se puede editar en cualquier PC» son dos cosas distintas. Además, si queda una caché de presentación, puede mostrarse solo el último aspecto aunque la aplicación de origen o el origen del vínculo no estén disponibles. Separar «se ve», «se puede editar» y «está actualizado» es la base del diagnóstico.78

En el diagrama, una línea continua marca una relación que siempre se cumple y una línea discontinua una relación condicional (las condiciones están en la explicación de cada relación en la página de detalle). La lista completa de relaciones (25 en total, con evidencia y grado de certeza) y las definiciones de los conceptos principales están reunidas en la página de detalle del mapa de conocimiento (en japonés). Datos: JSON-LD / Turtle

2. Dónde se usan los objetos OLE y cómo entran en un documento

2.1 Se encuentran en Word, Excel, Access y documentos empresariales antiguos

OLE ha sostenido la cultura documental de Windows desde la década de 1990. El mecanismo sigue en servicio hoy, pero para la práctica conviene verlo no como una tecnología que adoptar de forma activa en diseños nuevos, sino como una que se encuentra dentro de documentos y bases de datos existentes.

Dónde Punto de entrada para crear un objeto OLE Ejemplos de contenido
Word / Excel / PowerPoint Insertar > Objeto, Pegado especial Hojas de Excel, documentos de Word, dibujos, ecuaciones
Access Campos Objeto OLE Imágenes, hojas de Excel, archivos de varios tipos
Documentos de texto enriquecido (RTF) Pegados hechos en el pasado en WordPad y similares Dibujos, objetos de otras aplicaciones
Formularios y especificaciones antiguos Incrustaciones hechas por personal anterior Datos pensados para «abrirse con doble clic»

Las bases de datos que han almacenado fotos de empleados o imágenes de productos en campos Objeto OLE de Access son otro activo existente típico. Este uso tiene un problema de hinchazón, y la sección 5 cubre la decisión de migración.9

2.2 «Insertar objeto» y «Pegado especial»

Insertar objeto permite elegir entre crear un objeto nuevo y crear uno a partir de un archivo existente. También hay una opción de visualización «Mostrar como icono».

Pegado especial permite elegir el formato de los datos y, además, si se incrusta o se vincula. Las entradas listadas como «… objeto» son las opciones que pegan como OLE. Tanto los datos almacenados como el modo de editarlos después difieren de pegar una imagen simple.1011

Estos dos corresponden a los cuadros de diálogo estándar de OLE, Insert Object y Paste Special, y MFC proporciona clases para mostrarlos. La diferencia entre la vía que crea objetos a partir de copiar y pegar o arrastrar y soltar y la vía que los crea directamente a partir de una clase registrada o un archivo se explica en la sección 7.1.1012

3. Qué ocurre al hacer doble clic

3.1 El anfitrión es el «contenedor»; la aplicación que edita es el «servidor»

Cuando un documento de Word contiene una tabla de Excel, Word es el contenedor OLE que lo aloja, y Excel, que se encarga de editar la tabla, es el servidor OLE. Un documento que trata datos de varias aplicaciones dentro de un solo documento se llama documento compuesto OLE.12

Word no implementa todas las funciones de edición de Excel. El mecanismo usa las funciones de la aplicación de origen cuando se opera sobre el objeto. Por eso editar exige la aplicación de origen incluso cuando los datos mismos están almacenados dentro del documento.

3.2 Un doble clic ejecuta el «verbo principal» elegido por el objeto

Un objeto OLE define las operaciones que se pueden realizar sobre él como verbos (verbs): Editar para una tabla, Reproducir para audio, y así sucesivamente.

La aplicación anfitriona responde a un doble clic o a una acción similar llamando a IOleObject::DoVerb. Lo que hace la operación predeterminada, el verbo principal (OLEIVERB_PRIMARY), lo decide el objeto, no el anfitrión. DoVerb inicia automáticamente la aplicación servidor OLE y realiza la operación apropiada para ese objeto. Un doble clic no significa siempre Editar.13

3.3 Cuándo la edición ocurre dentro de Word y cuándo se abre una ventana aparte

Si tanto el objeto incrustado como el anfitrión admiten activación in situ (In-Place Activation), el objeto se puede editar dentro de la ventana del anfitrión. La barra de menús se sustituye por una barra de menús compuesta que fusiona los menús del contenedor y del servidor. Este es el mecanismo por el que los menús de edición de Excel aparecen dentro de Word. Un clic fuera del objeto lo desactiva y restaura los menús originales.14

Del doble clic a la activación in situLa aplicación anfitriona responde a un doble clic ejecutando el verbo principal mediante DoVerb de IOleObject, OLE inicia la aplicación servidor, y si tanto el anfitrión como el servidor admiten la activación in situ el objeto incrustado se edita dentro de la ventana del anfitrión con menús fusionados y un clic fuera lo desactiva y restaura los menús originales (si alguno no la admite, la edición ocurre en una ventana aparte)OLE / aplicación servidorAplicación anfitriona (Word, etc.)UsuarioOLE / aplicación servidorAplicación anfitriona (Word, etc.)Usuarioalt[Ambos admiten la activación in situ][Alguno de los dos no la admite]Doble clic en el objeto incrustadoEjecutar el verbo principal mediante DoVerbIniciar el servidor, fusionar los menúsEditar in situClic fuera del objetoDesactivar, restaurar los menús originalesEditar en una ventana aparte

Figura 2: Editar un objeto incrustado in situ exige el respaldo del contenedor y del servidor. Sin él, la edición ocurre en una ventana aparte.

Cómo se abre un objeto depende del tipo de objeto, del verbo ejecutado y de lo que admitan las aplicaciones.

Condición Cómo se abre
Incrustado, ambos lados admiten la activación in situ y se realiza la edición in situ Editado dentro de la ventana del anfitrión
Incrustado, pero alguno de los lados no admite la activación in situ Editado en una ventana aparte
Incrustado, con OLEIVERB_OPEN especificado Abierto en una ventana aparte
Un objeto vinculado Siempre se abre en una ventana aparte

La activación in situ es un mecanismo que presupone la incrustación; no se usa para vínculos. Implementarla es también opcional tanto para el contenedor como para el servidor. El mero hecho de que «el mismo documento se abre de forma distinta» no es motivo para llamarlo un fallo.11413

4. Diagnóstico por síntoma: no se actualiza, demasiado grande, no se abre

4.1 La tabla se ve, pero los cambios del origen del vínculo no se reflejan

Compruebe la ubicación del origen del vínculo y el método de actualización del vínculo. Lo que un vínculo mantiene del lado del documento no son los datos mismos, sino información de gestión como el nombre y la ubicación del origen y el ajuste de actualización, más, normalmente, una caché de presentación.155

La tarea de localizar el origen del vínculo corresponde a un componente COM llamado moniker. Cuando un traslado de servidor de archivos, un cambio de nombre de carpeta, un cambio de la ruta de recurso compartido, la eliminación del archivo original o algo similar hace imposible rastrear la nueva ubicación, la resolución del vínculo falla. Eso es un vínculo roto.

Si se guardó una caché de presentación, la tabla antigua permanece en el documento. Que se muestre una tabla no es prueba de que el vínculo esté sano. Si el objeto se creó con un ajuste que no conserva caché, ni siquiera queda ese último aspecto.78

La corrección consiste en reorientar la ruta del origen a la nueva ubicación desde el cuadro de diálogo Editar vínculos del documento. Si la ruta es correcta pero el objeto no se actualiza, puede estar simplemente configurado en actualización manual, así que compruebe también el método de actualización. Cuándo se reflejan los cambios del origen depende del ajuste de actualización automática o manual.6

Si hay muchos documentos que dependen en gran medida de vínculos, incluya un inventario antes del traslado y las actualizaciones de vínculos después del traslado en el plan de migración del servidor de archivos. Planifique también una actualización masiva cuando sea posible. Si solo se da cuenta después del traslado, termina buscando, documento a documento, los orígenes que usaba el personal anterior.

4.2 Un documento de Word o Excel es anormalmente grande

Compruebe si hace falta volver a editar, y reconsidere si el documento necesita mantener los datos mismos. La incrustación duplica los datos y los almacena dentro del documento, así que el documento es en general más grande que cuando el mismo contenido se vincula. Suele almacenarse también una caché de presentación, de modo que el documento no contiene necesariamente solo los datos usados para editar.47

Cuando un informe con muchas tablas incrustadas crece y tarda mucho en abrirse, sospeche esta estructura. Elija el remedio según cómo se usen los datos.

Cómo se usan los datos Cómo rehacerlo
No hace falta volver a editar en el documento Pegarlo como imagen
Los datos originales se comparten y los cambios deben reflejarse Compartir el archivo original por separado y poner un vínculo en el documento
Los datos originales se gestionan en otro sitio y el documento solo necesita el aspecto Compartir el archivo original y poner solo una imagen en el documento

Tenga en cuenta, no obstante, que pasar a vínculos para reducir el tamaño añade la responsabilidad de gestionar los orígenes. En documentos que se distribuyen, la referencia se rompe con facilidad, así que un «convertir toda incrustación en vínculo» generalizado no es la corrección adecuada.

4.3 El doble clic no abre ni edita el objeto

Compruebe primero si la aplicación de origen de ese objeto también está presente en el PC actual. El carácter autónomo de la incrustación se refiere a dónde se almacenan los datos; las funciones de edición no están dentro del documento.

Si falta la aplicación de origen, solo se puede usar la visualización, siempre que se haya guardado una caché de presentación. Los datos de presentación en caché están diseñados para estar disponibles desde el contenedor incluso cuando la aplicación servidor no se está ejecutando o no está disponible.7

Si el objeto se pegó con «Mostrar como icono», no obstante, se ve el icono pero no el contenido. En un objeto que no mantiene ninguna caché, ni siquiera queda el último aspecto. Si existe una caché depende del valor OLERENDER especificado en el momento de la creación.8

Si la aplicación de origen está presente y el objeto sigue sin abrirse, diagnostique en este orden.

  1. Compruebe la compatibilidad de versión de la aplicación. Puede ser necesario convertir el tipo, y OLE tiene un cuadro de diálogo estándar para la conversión.
  2. Compruebe un registro de clase COM (CLSID) ausente o dañado. Reparar el registro puede exigir reinstalar la aplicación o algo similar.
  3. Compruebe un bloqueo por la configuración de seguridad y corrupción del lado del documento.10

En documentos de origen desconocido, no priorice conseguir que se abran; adopte la práctica de no activar el objeto. El tratamiento de seguridad se explica en la sección 6.

5. En Access, separar «solo almacenar» de «necesitar el comportamiento OLE»

5.1 Las imágenes en un campo Objeto OLE tienden a hinchar la base de datos

El tipo de datos Objeto OLE de Access es un tipo de campo para incrustar o vincular en una tabla objetos como hojas de cálculo de Excel, documentos de Word, dibujos y sonidos. Su límite superior es de unos 1 GB.9

Usar este tipo solo para almacenar fotos de empleados o imágenes de productos convierte la eficiencia del almacenamiento en un problema. Microsoft explica que el tipo de datos Datos adjuntos es más flexible que el tipo de datos Objeto OLE y usa el almacenamiento con más eficiencia porque no crea una imagen de mapa de bits del archivo original.9

Pasar al tipo Datos adjuntos no elimina, no obstante, los límites de tamaño.

Elemento Restricción o propiedad
Formatos que admiten el tipo Datos adjuntos .accdb
Tamaño máximo de toda la base de datos 2 GB
Tamaño máximo de cada archivo adjunto 256 MB
Visualización de imágenes BMP, PNG, JPEG y similares se muestran sin software adicional

Estas son restricciones del tipo Datos adjuntos de Access. Se aplican a un asunto distinto del límite de unos 1 GB del tipo Objeto OLE.16

5.2 Para el almacenamiento solo, use el tipo Datos adjuntos o una carpeta con gestión de rutas

En un diseño nuevo que solo necesita almacenar imágenes o archivos, no hay motivo para elegir el tipo Objeto OLE. Considere el tipo Datos adjuntos, o un diseño que coloca los archivos en una carpeta y guarda solo las rutas en la base de datos. También para las bases existentes, estas dos son las metas de migración.

Es otro asunto si se necesita un comportamiento específico de OLE, como vinculación o activación. En ese caso, tome la decisión incluyendo mantener el statu quo entre las opciones. En lugar de «reemplazarlo de inmediato porque es el tipo Objeto OLE», separe primero si es mero almacenamiento o si necesita funcionar como objeto.916

6. Seguridad: tratar de forma distinta la incrustación ordinaria y los paquetes OLE

6.1 Un documento se convierte en un punto de entrada para ejecutar otra aplicación

Con OLE, un objeto de otra aplicación se introduce en un documento y se ejecuta en el PC de quien lo abre. Esta estructura es también un vehículo de entrega para los atacantes.

De hecho, CVE-2014-4114, una vulnerabilidad que ejecuta código arbitrario mediante archivos de PowerPoint y similares que contienen un objeto OLE manipulado, se usó en ataques dirigidos. Como los formatos de Office y otros que pueden contener objetos OLE pueden convertirse en vectores de ataque, «solo quería leer el documento» se transforma en un punto de entrada para la ejecución.17

6.2 Bloquear la activación de paquetes OLE en toda la organización

Los paquetes OLE (Object Packager) merecen una atención particular. Son un mecanismo antiguo que envuelve un archivo cualquiera en un documento como objeto OLE, y también pueden contener archivos ejecutables. También se ha publicado una vulnerabilidad de ejecución remota de código relativa a Object Packager.18

Por esta razón, prohibir la activación de paquetes OLE en Word, Excel y PowerPoint mediante un ajuste del Registro es una medida de endurecimiento. La guía de Microsoft alineada con Essential Eight del Gobierno de Australia muestra el procedimiento para distribuir a la organización, a través de Intune, un script de PowerShell para estos ajustes.19

Divida la práctica de explotación en tres puntos.

  • No abra, y no deje abrir, objetos en documentos de origen desconocido. Trate la activación como una operación del mismo peso que abrir otro archivo.
  • Bloquee la activación de paquetes OLE en toda la organización. Casi nunca se necesita en el trabajo normal, así que no se fíe solo de la cautela individual.
  • No imponga una prohibición general que se extienda a la incrustación y la vinculación ordinarias en documentos internos. Juzgue el riesgo de los paquetes y de los documentos manipulados por separado del uso empresarial existente.

La conclusión de este artículo no es «prohibir OLE por completo». En lugar de detener el trabajo al prohibir de forma uniforme incluso las tablas de Excel incrustadas ordinarias, el punto es centrarse en los objetos de origen desconocido y en los paquetes OLE.

7. Mecanismos internos: los papeles de COM, el almacenamiento estructurado y los monikers

A partir de aquí, la explicación se acerca a la implementación, en la medida necesaria para mantener aplicaciones empresariales e investigar activos documentales. Relaciona los síntomas vistos hasta ahora con «qué mecanismo es el responsable».

7.1 Los tres cimientos de los documentos compuestos OLE

Los documentos compuestos OLE se apoyan en COM, el almacenamiento estructurado (Structured Storage) y la transferencia unificada de datos (Uniform Data Transfer). Además del IUnknown de COM, un objeto expone interfaces específicas de documento compuesto como IOleObject e IViewObject2. Un objeto vinculado implementa además IOleLink.2

Cimiento Responsabilidad Interfaces principales
COM El objeto mismo y el contrato para operar sobre él IUnknown, IOleObject, IViewObject2, e IOleLink para vínculos
Almacenamiento estructurado Almacenamiento jerárquico dentro del documento IStorage, IStream
Transferencia unificada de datos El punto de entrada para crear incrustaciones y vínculos a partir de copiar y pegar o arrastrar y soltar IDataObject

En la vía de transferencia de datos, el servidor OLE ofrece sus datos a través de IDataObject y comunica al contenedor, mediante formatos de portapapeles dedicados, si se pueden pegar como incrustación o como vínculo. Eso es lo que conduce a las opciones de Pegado especial.12

Sin embargo, no toda operación de creación pasa por IDataObject. Crear un objeto nuevo desde Insertar objeto, o crear uno a partir de un archivo existente, es una vía distinta que crea el objeto directamente a partir de una clase registrada o un archivo. Los mecanismos del portapapeles y de arrastrar y soltar en sí se cubren en «Cómo funcionan el portapapeles y arrastrar y soltar».

7.2 El almacenamiento estructurado es «un sistema de archivos dentro de un solo archivo»

El almacenamiento estructurado crea, dentro de un solo archivo, una jerarquía de almacenamientos (IStorage), que corresponden a directorios, y secuencias (IStream), que corresponden a archivos. Se pueden anidar subalmacenamientos y secuencias bajo el almacenamiento raíz.20

La implementación estándar que proporciona COM son los archivos compuestos (Compound Files). Es un formato de archivo único que se puede tratar con independencia de sistemas de archivos como FAT y NTFS, y el formato mismo se publica como MS-CFB (Compound File Binary File Format).2122

El contenedor proporciona el lugar donde se guarda el objeto. Un objeto que persiste mediante IPersistStorage escribe sus datos en el IStorage que se le entrega. Una implementación que usa IPersistStream guarda en un IStream en su lugar.2

Estructura interna de un archivo compuestoUn archivo compuesto tiene, bajo su almacenamiento raíz, una jerarquía de almacenamientos que corresponden a directorios y secuencias que corresponden a archivos; los objetos incrustados que persisten mediante IPersistStorage se guardan en subalmacenamientos y los objetos que persisten mediante IPersistStream en secuencias; el almacenamiento de un objeto incrustado puede llevar un CLSID que identifica la aplicación de origen (también puede estar vacío); la secuencia de la caché de presentación suele guardarse pero puede faltar según el ajuste en el momento de la creación; el conjunto funciona como un sistema de archivos dentro de un solo archivoAlmacenamiento raíz (cuerpo del documento)Secuencia: datos del cuerpoAlmacenamiento: incrustación (IPersistStorage)Secuencia: datos del objetoSecuencia: caché de presentación (habitual)El CLSID puede identificar el origen (opcional)Secuencia: persistencia IPersistStream

Figura 3: Se construye una jerarquía dentro del documento y el objeto guarda sus propios datos. Distinga la persistencia mediante un almacenamiento de la persistencia mediante una secuencia.

Una entrada de directorio puede llevar un CLSID que identifica la aplicación de origen del objeto. Si el almacenamiento de la incrustación contiene un CLSID, es posible determinar qué aplicación debe abrir el objeto. El CLSID puede estar vacío, no obstante, y la caché de presentación también puede faltar según el ajuste en el momento de la creación.228

7.3 Pasar a .docx no hizo desaparecer el formato de almacenamiento OLE

En los formatos antiguos de Office .doc / .xls, el archivo mismo es un archivo compuesto. El cuerpo del documento se almacena como secuencias, y los objetos incrustados como subalmacenamientos.

Los .docx / .xlsx actuales son formatos Open XML basados en ZIP, pero los binarios de las incrustaciones OLE heredadas, oleObject*.bin, se siguen almacenando en el formato de archivo compuesto. Por otro lado, cuando se incrustan unos en otros documentos de Office nuevos, un archivo como un .xlsx puede quedar tal cual dentro del ZIP.22

Qué se almacena Recipiente de almacenamiento
Formatos antiguos de Office .doc / .xls El archivo entero es un archivo compuesto
Incrustaciones OLE heredadas dentro de los formatos actuales Un binario dentro del ZIP es un archivo compuesto
Documentos de Office nuevos incrustados unos en otros Pueden almacenarse dentro del ZIP como un archivo

En otras palabras, el archivo compuesto no es meramente «un formato de documento antiguo»; sobrevive dentro de los documentos actuales como formato de almacenamiento anidado.

7.4 Los monikers siguen la ubicación del vínculo; los ajustes del vínculo rigen las actualizaciones

Un moniker es un componente COM que expresa la ubicación de un objeto como un nombre y la resuelve cuando hace falta. Esta resolución se llama enlace (binding). Un objeto vinculado usa monikers para gestionar el nombrado, el seguimiento y la activación del origen del vínculo.15

IOleLink es la interfaz que proporciona al contenedor la gestión del origen del vínculo. Su presencia o ausencia permite al contenedor distinguir una incrustación de un vínculo. Incluso cuando se guarda un documento que contiene un vínculo, los datos del vínculo mismos se guardan en el origen. Lo que permanece en el documento es la información de gestión propia del vínculo, como su nombre y ubicación y el ajuste de actualización, y normalmente una caché de presentación.15

Esta división del trabajo es lo que conduce al «la tabla se ve pero no se actualiza» de la sección 4.1. Si falla la resolución del origen, no se puede llegar a los datos, y aunque se pueda llegar, un vínculo configurado en actualización manual no se actualiza de forma automática. Investigar por separado la resolución de la ubicación, el ajuste de actualización y la visualización en caché permite ordenar la causa.67

8. Cómo convivir con OLE hoy: no añadir dependencias nuevas, conocer las existentes

La política básica es evitar apoyarse en la incrustación OLE en diseños nuevos, y tratar los activos existentes «manteniendo un entorno que pueda abrirlos» y «haciendo inventario». Si se sigue usando se decide caso por caso.

Situación Respuesta recomendada Motivo
Flujos documentales nuevos No apoyarse en la incrustación: pegar como imagen, compartir el archivo original, y así sucesivamente. Mantener también los vínculos al mínimo Evita la hinchazón y una nueva dependencia del entorno de edición
Una aplicación empresarial nueva que necesita poner datos de otra aplicación en un documento Diseñar en torno a imágenes, PDF o archivos adjuntos en lugar de implementar un contenedor OLE Hoy casi no hay ningún caso en el que compense el coste de implementación y mantenimiento
Documentos incrustados existentes Mantener un entorno que pueda abrirlos, y conservar una versión PDF junto a los documentos importantes Aunque los datos estén dentro del documento, no se puede editar una vez se pierde la aplicación de origen
Documentos que dependen en gran medida de vínculos, y una migración de servidor de archivos Incluir un inventario de vínculos y sus actualizaciones en el plan de migración Los vínculos se rompen si no se puede rastrear la ubicación posterior al traslado
Imágenes o archivos almacenados en Access Migrar al tipo Datos adjuntos o a la gestión por rutas. Decidir por separado cuando se necesita un comportamiento específico de OLE Para el mero almacenamiento, el tipo Datos adjuntos es más flexible y eficiente
Endurecer el entorno de Office Bloquear la activación de paquetes OLE en toda la organización Presentado como una medida de endurecimiento alineada con directrices públicas

Las decisiones de Access y de seguridad corresponden cada una también al material de Microsoft.919

Para la conservación a largo plazo, el entorno que puede abrir los datos forma parte del activo, no solo los datos. Los cambios de generación de las aplicaciones y los cambios del sistema operativo erosionan el supuesto de que la aplicación de origen está disponible. Más allá de conservar versiones PDF de documentos importantes, hacen falta medidas como mantener un entorno que pueda abrirlos en una máquina virtual.

El mecanismo OLE sigue funcionando mientras Windows siga preservando la compatibilidad hacia atrás. Si un objeto individual se abre, no obstante, depende de si la aplicación de origen sigue existiendo. Si ese supuesto está asegurado, no hace falta precipitarse a eliminarlo todo.

El inventario debería identificar tres cosas: los servidores que mantienen orígenes de vínculo, los documentos que contienen incrustaciones y las bases de datos que usan el tipo Objeto OLE. Una vez se conocen estas dependencias, las migraciones, el endurecimiento y las conversiones se pueden incorporar a un plan.

9. Resumen

Un objeto OLE es un objeto COM para tratar los datos de documento de otra aplicación como incrustación o como vínculo. La incrustación almacena los datos dentro del documento; la vinculación referencia datos en otra ubicación. Empiece por tener clara esa diferencia.245

A continuación, piense por separado la visualización, la edición y la actualización. Aunque quede una caché de presentación, el objeto no se puede editar sin la aplicación de origen, y no se puede actualizar si no se puede rastrear el origen del vínculo. Cómo se abre al hacer doble clic también varía con el tipo de objeto, el verbo y el respaldo de la activación in situ.

No añada dependencias nuevas en flujos nuevos, y mantenga los documentos existentes conociendo el entorno que puede abrirlos y hacia dónde apuntan sus referencias. Para el mero almacenamiento de imágenes y archivos en Access, use el tipo Datos adjuntos o la gestión por rutas, y bloquee la activación de paquetes OLE en toda la organización.

COM, el portapapeles y arrastrar y soltar, y los documentos compuestos de este artículo son facetas distintas de la palabra OLE. Separar los papeles de infraestructura de componentes, transferencia de datos e integración en documentos facilita seguir lo que ocurre dentro de los activos empresariales antiguos.

Artículos relacionados

Áreas de consultoría relacionadas

KomuraSoft LLC se encarga de la investigación y la migración de activos documentales y de bases de datos heredados que involucran OLE y COM (salida del tipo Objeto OLE de Access, inventario de documentos incrustados y conversión a PDF, tratamiento masivo de vínculos rotos), el mantenimiento y la modificación de aplicaciones empresariales que incluyen componentes COM, y el diseño de aplicaciones integradas con Office. Puede consultarnos incluso desde la etapa en la que aún no se sabe qué ocurre al hacer doble clic en este documento.

Referencias

  1. Microsoft Learn, OLE Background. Sobre que OLE proviene del acrónimo Object Linking and Embedding, sobre que los documentos OLE (documentos compuestos) integran datos de varias aplicaciones, sobre la división de papeles entre contenedores y servidores, sobre una visión general de la activación in situ (edición visual), y sobre que los elementos vinculados no se activan in situ.  2 3

  2. Microsoft Learn, Compound Documents. Sobre que los documentos compuestos OLE se apoyan en COM, el almacenamiento estructurado y la transferencia unificada de datos; sobre que los objetos de documento compuesto son objetos COM que se pueden incrustar en un documento o vincular a él y exponen interfaces específicas como IOleObject, IOleLink e IViewObject2; y sobre que los objetos gestionan su propia persistencia mediante IPersistStorage/IPersistStream mientras el contenedor suministra el IStorage.  2 3 4 5

  3. Microsoft Learn, Linking and Embedding. Sobre que hay dos clases de objetos de documento compuesto, vinculados e incrustados, y sobre que la diferencia en dónde se almacenan los datos de origen afecta a la portabilidad, la activación, la actualización y el tamaño. 

  4. Microsoft Learn, Embedded Objects (COM). Sobre que los objetos incrustados se almacenan físicamente dentro del documento compuesto junto con su información de gestión, sobre que el documento es más grande que cuando el objeto se mantiene como vínculo, sobre que los cambios del origen no se reflejan en la copia incrustada, y sobre las ventajas de la portabilidad (los vínculos no se rompen cuando el documento se entrega a otro PC) y de la activación in situ.  2 3

  5. Microsoft Learn, Linked Objects. Sobre que los datos de origen de un objeto vinculado permanecen en el origen del vínculo y en el documento solo se almacenan una referencia e información de presentación, sobre que el tamaño del documento se mantiene pequeño, sobre que los cambios del origen se reflejan en todo documento que contiene el vínculo, y sobre que activar un vínculo inicia la aplicación servidor.  2 3

  6. Microsoft Learn, OLEUPDATE enumeration (oleidl.h). Sobre que la actualización de la caché de un objeto vinculado es automática (OLEUPDATE_ALWAYS) o manual (OLEUPDATE_ONCALL), correspondiente a las opciones de actualización automática y manual del cuadro de diálogo Vínculos, y sobre que las actualizaciones manuales ocurren solo cuando se llama a IOleObject::Update o IOleLink::Update.  2 3

  7. Microsoft Learn, IOleCache interface (oleidl.h). Sobre la interfaz que proporciona el control de los datos de presentación almacenados en caché dentro de un objeto, y sobre que los datos de presentación en caché están disponibles desde el contenedor del objeto incluso cuando la aplicación servidor no se está ejecutando o no está disponible.  2 3 4 5

  8. Microsoft Learn, OLERENDER enumeration (oleidl.h). Sobre la enumeración que indica el tipo de caché local solicitada al crear una incrustación o un vínculo, y sobre que especificar OLERENDER_NONE no solicita ninguna capacidad de dibujo u obtención de datos almacenada en caché localmente (es decir, ninguna caché de presentación).  2 3 4

  9. Microsoft Learn, DataType property (Access). Sobre que el tipo Objeto OLE de Access es un tipo para incrustar o vincular en una tabla objetos como hojas de cálculo de Excel, documentos de Word, gráficos y sonidos, con un límite de unos 1 GB, y sobre que el tipo Datos adjuntos es más flexible que el tipo Objeto OLE y usa el almacenamiento con más eficiencia porque no crea una imagen de mapa de bits del archivo original.  2 3 4 5

  10. Microsoft Learn, Dialog boxes in OLE. Sobre los papeles de los cuadros de diálogo estándar de OLE: Insert Object (insertar un objeto nuevo o uno de un archivo existente, y mostrarlo como icono), Paste Special (elegir el formato y elegir incrustación, vinculación o visualización como icono), Change Icon y Convert (convertir el tipo de un elemento incrustado o vinculado).  2 3

  11. Microsoft Learn, Selection.PasteSpecial method (Word). Sobre el método VBA equivalente al Pegado especial de Word, que, además de especificar el formato de pegado, controla el pegado vinculado mediante el argumento Link y la visualización como icono mediante el argumento DisplayAsIcon. 

  12. Microsoft Learn, Creating Linked and Embedded Objects from Existing Data. Sobre que la creación de objetos incrustados y vinculados parte de una transferencia de datos IDataObject a través del portapapeles o de arrastrar y soltar, sobre que los servidores OLE ofrecen formatos de portapapeles dedicados para crear incrustaciones y vínculos en orden de fidelidad, y sobre elegir entre incrustar y vincular con un comando equivalente a Pegado especial.  2

  13. Microsoft Learn, IOleObject::DoVerb method (oleidl.h). Sobre que los verbos son acciones definidas por el objeto, sobre que OLEIVERB_PRIMARY, que determina el comportamiento del doble clic, lo decide el objeto y no el contenedor, sobre que DoVerb inicia automáticamente la aplicación servidor OLE, y sobre que OLEIVERB_OPEN abre un objeto incrustado en una ventana aparte.  2

  14. Microsoft Learn, Implementing In-Place Activation. Sobre que la activación in situ permite operar sobre un objeto incrustado sin salir del documento contenedor, sobre que la barra de menús se sustituye en la activación por una barra de menús compuesta que fusiona los menús del contenedor y del servidor y se restaura al desactivar, sobre que la implementación es opcional tanto para el contenedor como para el servidor, y sobre que los objetos vinculados siempre se abren en una ventana aparte.  2

  15. Microsoft Learn, Linked Objects and Monikers. Sobre que los objetos vinculados nombran el origen mediante monikers y se encargan del enlace (binding), que encuentra y activa el origen, sobre que IOleLink identifica un objeto como vínculo y proporciona la gestión del origen, y sobre que los datos se guardan en el origen cuando se guarda un documento que contiene un vínculo mientras el documento almacena solo el nombre y la ubicación.  2 3

  16. Microsoft Learn, Attachment object (Access). Sobre que el tipo Datos adjuntos está disponible en bases de datos .accdb, sobre que el límite de los datos adjuntos es el tamaño máximo de base de 2 GB con archivos individuales de hasta 256 MB, y sobre que formatos de imagen como BMP, PNG y JPEG se pueden mostrar sin software adicional.  2

  17. Microsoft Learn, Microsoft Security Bulletin MS14-060 (CVE-2014-4114). Sobre que OLE es una tecnología que permite crear y editar datos compuestos, sobre la vulnerabilidad que permite la ejecución de código arbitrario con los derechos del usuario actual al hacer que un usuario abra un archivo que contiene un objeto OLE manipulado, sobre que los formatos de Office y muchos otros formatos de archivo que pueden contener objetos OLE pueden contener objetos OLE maliciosos, y sobre que se observaron ataques dirigidos limitados que explotaban esta vulnerabilidad. 

  18. Microsoft Learn, Microsoft Security Bulletin MS12-002. Sobre que Windows Object Packager es una herramienta que crea paquetes que se pueden insertar en archivos, y sobre la vulnerabilidad de ejecución remota de código (CVE-2012-0009) causada por su registro e implementación incorrectos, junto con las mitigaciones. 

  19. Microsoft Learn, Essential Eight user application hardening. Sobre que la guía de endurecimiento alineada con Essential Eight del Gobierno de Australia muestra el procedimiento para distribuir a través de Intune un script de PowerShell que aplica las claves del Registro que bloquean la activación de paquetes OLE en Excel, PowerPoint y Word.  2

  20. Microsoft Learn, IStorage interface (objidl.h). Sobre que el almacenamiento estructurado permite el almacenamiento jerárquico de información dentro de un solo archivo y se llama «un sistema de archivos dentro de un archivo», sobre que los almacenamientos corresponden a directorios y las secuencias a archivos, y sobre que se pueden anidar subalmacenamientos y secuencias bajo el almacenamiento raíz. 

  21. Microsoft Learn, Compound Files. Sobre que los archivos compuestos son la implementación estándar del almacenamiento estructurado que proporciona COM, sobre que funcionan encima de sistemas de archivos planos existentes como formato independiente del sistema de archivos cuyos archivos se pueden abrir de forma intercambiable entre FAT, NTFS y los sistemas de archivos Macintosh, y sobre que las interfaces estándar permiten enumerar y examinar los objetos del interior. 

  22. Microsoft Learn, [MS-CFB]: Compound File Binary File Format. La especificación publicada del formato binario de archivo compuesto: la definición de una estructura de tipo sistema de archivos que almacena secuencias de datos específicas de la aplicación dentro de un solo archivo, y las entradas de directorio que enumeran almacenamientos y secuencias junto con su campo CLSID.  2 3

Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.

Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.

El artículo está directamente relacionado con los siguientes servicios.

Preguntas frecuentes

Preguntas habituales en las consultas sobre el tema del artículo.

¿En qué se diferencian la incrustación y la vinculación?
La diferencia está en dónde se guardan los datos propiamente dichos. La incrustación (Embedding) almacena por completo los datos del objeto dentro del documento contenedor. El documento pasa a ser independiente del archivo original, de modo que entregarlo a otro PC no rompe ninguna referencia (aunque para editarlo hace falta que la aplicación de origen esté también en el PC receptor; sin ella, solo se puede ver la caché de presentación si se guardó una, y un objeto mostrado como icono no se puede inspeccionar en absoluto). A cambio, el archivo crece, y los cambios de los datos originales no se reflejan en el documento. La vinculación (Linking) coloca en el documento solo una referencia (el nombre y la ubicación del origen del vínculo), el ajuste de actualización y la información de presentación, mientras que los datos propiamente dichos permanecen en el archivo de origen. El documento es pequeño y los cambios del origen pueden reflejarse en él (de forma automática o manual, según el ajuste de actualización del vínculo), pero si el origen se mueve o se cambia de nombre de modo que ya no se pueda rastrear, el vínculo se rompe. Se elige el modo de pegado en el cuadro de diálogo Pegado especial o Insertar objeto.
¿Por qué un objeto incrustado en un documento no se abre ni se edita al hacer doble clic?
La causa más habitual es que la aplicación de origen de ese objeto no está instalada en el PC actual. Editar un objeto incrustado inicia la aplicación de origen (el servidor OLE), así que sin ella solo se puede ver la caché de presentación, si se guardó una, y si el objeto se muestra como icono ni siquiera se puede ver su contenido. Si la aplicación de origen está presente pero el objeto sigue sin abrirse, sospeche en este orden: un caso en el que una diferencia de versión exige una conversión, un registro de clase COM (CLSID) ausente o dañado que una reinstalación o similar puede reparar, corrupción del lado del documento, y un caso en el que la configuración de seguridad bloquea la activación.
¿Por qué los archivos de Word y Excel se vuelven anormalmente grandes con objetos incrustados?
Porque la incrustación es un método que almacena un duplicado de los datos propiamente dichos dentro del documento. Un documento que mantiene un objeto como incrustación es en general más grande que uno que mantiene el mismo objeto como vínculo. Además, el documento suele almacenar una caché de presentación junto a los datos usados para editar (si se conserva una caché lo decide el ajuste en el momento de la creación). Para reducir el archivo, las opciones son vincular en lugar de incrustar, pegar como imagen (aceptando que no hace falta volver a editar) o compartir el archivo original por separado y dejar en el documento solo un vínculo o una imagen. Los vínculos, no obstante, exigen gestionar el origen, así que no convienen a documentos que se distribuyen.
Después de trasladar el servidor de archivos, los objetos vinculados de los documentos dejaron de actualizarse. ¿Por qué?
Porque lo que un objeto vinculado mantiene dentro del documento no son los datos propiamente dichos, sino solo el nombre y la ubicación del origen del vínculo (un moniker), el ajuste de actualización y una caché de presentación. Cuando la ubicación del origen cambia por un traslado de servidor de archivos, un cambio de nombre de carpeta, un cambio de la ruta de recurso compartido o algo similar, y la nueva ubicación ya no se puede rastrear, la resolución del vínculo falla y en el documento solo queda la caché de presentación antigua (en un objeto creado con un ajuste que no guarda caché, ni siquiera queda esa visualización). Para repararlo, reoriente la ruta del origen a la nueva ubicación desde Editar vínculos en cada documento. Tenga en cuenta que, si la ruta es correcta pero el objeto sigue sin actualizarse, el vínculo puede estar simplemente configurado en actualización manual en lugar de estar roto; compruebe también el ajuste del método de actualización. Si hay muchos documentos, haga un inventario de los que contienen vínculos antes del traslado y, si es posible, incorpore una actualización masiva de vínculos al plan.
He oído que los objetos OLE son un riesgo de seguridad. ¿Se pueden seguir usando?
La estructura de OLE, que introduce el objeto de otra aplicación en un documento y lo ejecuta en el lado que lo abre, es también un vehículo de entrega cómodo para los atacantes, y se han usado en ataques dirigidos reales vulnerabilidades de ejecución de código arbitrario mediante objetos OLE manipulados. Los paquetes OLE, que pueden envolver un archivo cualquiera, son especialmente peligrosos, y las directrices públicas como Essential Eight del Gobierno de Australia recomiendan prohibir la activación de paquetes OLE en Word, Excel y PowerPoint mediante un ajuste del Registro. No hace falta una prohibición general que se extienda a la incrustación y la vinculación ordinarias en documentos internos; el término medio realista es no abrir objetos en documentos de origen desconocido y bloquear la activación de paquetes OLE en toda la organización.

Perfil del autor

Página de presentación del autor del artículo.

Go Komura

Representante de KomuraSoft LLC

Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.

Volver al blog