¿Qué es un objeto OLE? — Incrustación, vinculación y las trampas de los documentos empresariales
· Actualizado el: · Go Komura · 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
flowchart TB
accTitle: La diferencia entre incrustar y vincular
accDescr: La 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)
doc["Documento contenedor (documento de Word, etc.)"] --> emb["Incrustación: almacena los datos mismos"]
doc --> lnk["Vinculación: referencia, ajustes y (normalmente) info de presentación"]
emb -.-> self["Autónomo pero más grande"]
lnk --> src["Archivo de origen del vínculo (los datos viven aquí)"]
src -.-> upd["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
sequenceDiagram
accTitle: Del doble clic a la activación in situ
accDescr: La 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)
participant U as Usuario
participant C as Aplicación anfitriona (Word, etc.)
participant S as OLE / aplicación servidor
U->>C: Doble clic en el objeto incrustado
C->>S: Ejecutar el verbo principal mediante DoVerb
alt Ambos admiten la activación in situ
S->>C: Iniciar el servidor, fusionar los menús
U->>C: Editar in situ
U->>C: Clic fuera del objeto
C->>S: Desactivar, restaurar los menús originales
else Alguno de los dos no la admite
S->>C: Editar en una ventana aparte
end
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.
- 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.
- Compruebe un registro de clase COM (CLSID) ausente o dañado. Reparar el registro puede exigir reinstalar la aplicación o algo similar.
- 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
flowchart TB
accTitle: Estructura interna de un archivo compuesto
accDescr: Un 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 archivo
root["Almacenamiento raíz (cuerpo del documento)"] --> s0["Secuencia: datos del cuerpo"]
root --> st1["Almacenamiento: incrustación (IPersistStorage)"]
st1 --> s1["Secuencia: datos del objeto"]
st1 --> s2["Secuencia: caché de presentación (habitual)"]
st1 -.-> cls["El CLSID puede identificar el origen (opcional)"]
root -.-> s3["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
- Qué son COM, ActiveX y OCX - Diferencias y relación explicadas
- Cómo funcionan el portapapeles y arrastrar y soltar — Gestionar correctamente la transferencia de datos OLE en aplicaciones empresariales
- Conocimientos básicos de STA/MTA en COM - El modelo de subprocesos y cómo evitar los bloqueos
- El problema de EXCEL.EXE que permanece al operar Excel desde C# — Patrones de liberación de referencias COM y el criterio de sustitución
- ActiveX / OCX: cómo tratarlos hoy — tabla de decisión para mantener, envolver o reemplazar
- Prolongar la vida útil o migrar aplicaciones VB6 / Access — Tabla de decisión: mantener, envolver o reemplazar
Á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.
- Desarrollo de aplicaciones Windows
- Desarrollo de componentes COM
- Consultoría técnica y revisión de diseño
- Contacto
Referencias
-
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
-
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
-
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. ↩
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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. ↩
-
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
-
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
-
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
-
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
-
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
-
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. ↩
-
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. ↩
-
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
-
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. ↩
-
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. ↩
-
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 relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
Cómo funcionan el portapapeles y arrastrar y soltar — tratar correctamente la transferencia de datos OLE en aplicaciones empresariales
Una tabla de Excel se deshace al pegarla y deja de pegarse al cerrar el origen: el portapapeles coloca el mismo contenido en varios forma...
Cómo funciona la compatibilidad de aplicaciones en Windows ── el modo de compatibilidad, los shims y Compatibility Administrator para prolongar la vida de aplicaciones antiguas
Por qué funciona el modo de compatibilidad: el mecanismo de los shims (hooks de API), sus funciones típicas, el despliegue con Compatibil...
Prolongar la vida útil o migrar aplicaciones VB6 / Access — Tabla de decisión: mantener, envolver o reemplazar
Cómo decidir si mantener, prolongar la vida útil o reemplazar aplicaciones VB6 y Access: el runtime, los bits de ACE, riesgos de carpetas...
Causas y pasos de verificación cuando ActiveX no funciona en Office 2024/Microsoft 365
Cuando ActiveX no funciona en Office 2024/Microsoft 365, ordenamos el diagnóstico entre desactivación predeterminada, 32/64 bits, registr...
Qué son COM, ActiveX y OCX - Diferencias y relación explicadas
Explicamos qué son COM, ActiveX y OCX: diferencias, relación, vínculo con OLE, dónde se usan y cómo abordarlos hoy desde una perspectiva ...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Migración de ActiveX
Decisiones para conservar, encapsular o sustituir componentes COM / ActiveX / OCX.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Desarrollo de aplicaciones para Windows
Aplicaciones empresariales, integración de dispositivos y herramientas de comunicación, de los requisitos al desarrollo.
Reutilización y migración de activos existentes
Reutilización y migración de activos COM / ActiveX / OCX y dependencias de 32 o 64 bits.
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.