Seguimiento de vínculos distribuidos e identificadores de objeto

El almacenamiento de una referencia a un archivo o directorio mediante su ruta de acceso y nombre de archivo no es confiable. Si un usuario cambia el nombre de un archivo, interrumpe los vínculos al archivo. Si un usuario cambia el nombre del directorio, interrumpe los vínculos al archivo y todos los archivos y subdirectorios del árbol de directorios.

El servicio de seguimiento de vínculos distribuidos permite a las aplicaciones cliente realizar un seguimiento de los orígenes de vínculo que se han movido. Los clientes que se suscriben al servicio de seguimiento de vínculos pueden mantener la integridad de sus referencias y los objetos se pueden realizar un seguimiento de forma transparente para el usuario.

Identificadores de objetos

El servicio de seguimiento de vínculos mantiene su vínculo a un objeto mediante un identificador de objeto (ID). Un identificador de objeto es un atributo opcional que identifica de forma única un archivo o directorio en un volumen.

Un índice de todos los identificadores de objeto se almacena en el volumen. Las operaciones de cambio de nombre, copia de seguridad y restauración conservan los identificadores de objeto. Sin embargo, las operaciones de copia no conservan los identificadores de objeto, ya que eso infringiría su exclusividad.

Puede realizar las siguientes operaciones en identificadores de objeto:

  • Creación
  • Eliminación
  • Consultar

Cuando se crea un identificador de objeto, se establece la identidad del archivo en el servicio de seguimiento de vínculos. Por el contrario, al eliminar un identificador de objeto, el servicio de seguimiento de vínculos deja de mantener vínculos al archivo. Para obtener una lista de los códigos de control del sistema de archivos que realizan operaciones en identificadores de objeto, vea Códigos de control de administración de archivos.

El servicio de seguimiento de vínculos distribuido realiza un seguimiento de los orígenes de vínculos para los accesos directos de shell y los vínculos OLE dentro de los volúmenes del sistema de archivos NTFS. El cliente de vínculo puede corregir un vínculo roto con información actualizada sobre la nueva ubicación del origen del vínculo.

Los métodos abreviados de shell incluyen el seguimiento de vínculos heurísticos que usa un algoritmo de búsqueda de árboles para buscar una coincidencia para un origen de vínculo movido. El algoritmo de búsqueda se basa en la última ruta de acceso conocida del archivo y la información de archivo que incluye la fecha de creación, el tamaño del archivo y el nombre de archivo y la extensión.

La vinculación OLE incluye el mismo seguimiento de vínculos heurísticos. Windows también incluye el mismo seguimiento de vínculos heurísticos con algunas mejoras agregadas para buscar espacios de nombres para producir resultados en algunos escenarios comunes. Las mejoras incluyen el siguiente procedimiento que depende de los límites de tiempo impuestos por una aplicación cliente.

Para buscar espacios de nombres

  1. Busque cuatro niveles de directorio hacia abajo desde el último directorio.
  2. Subir un directorio y repetir los pasos 1 y 2 otras tres veces, lo que puede producir resultados si el objeto se ha movido cerca.
  3. Busque cuatro niveles hacia abajo desde la raíz del escritorio, lo que puede producir resultados si el objeto se ha movido a una ubicación en el mismo escritorio.
  4. Busque cuatro niveles hacia abajo desde la raíz en cada unidad fija local.
  5. Repita los pasos del 1 al 3 sin el límite de cuatro directorios.

Nota

Estos esquemas de seguimiento de vínculos son transparentes para el usuario final. Sin embargo, no siempre producen resultados positivos y pueden llevar mucho tiempo.

 

Para obtener más información sobre los métodos abreviados de shell, consulte IShellLink.

Para obtener más información sobre los vínculos OLE, vea IOleLink.

Si se realiza un vínculo a un archivo en NTFS 3.0 o posterior, y el archivo se mueve a cualquier otro volumen con NTFS 3.0 o posterior en el mismo dominio, el servicio de seguimiento puede encontrar el archivo, sujeto a consideraciones de tiempo. Además, si el archivo se mueve fuera del dominio o dentro de un grupo de trabajo, se encuentra.

Para obtener la versión NTFS de un volumen, abra un símbolo del sistema con derechos de acceso de administrador y ejecute el siguiente comando:

fsutil fsinfo ntfsinfoX:

donde X es la letra de unidad del volumen.

Cuando se crea un vínculo en un archivo, el archivo de destino se considera el origen del vínculo y el creador del vínculo es el cliente de vínculo. Por ejemplo, si se crea un acceso directo de shell para vincular a un documento de texto, el documento de texto es el origen del vínculo y el acceso directo del shell es el cliente de vínculo.

El servicio de seguimiento de vínculos distribuidos mantiene vínculos de archivo para las siguientes situaciones que se producen dentro de un dominio:

  • El archivo de origen del vínculo se mueve de un volumen del sistema de archivos NTFS a otro dentro del mismo dominio.
  • Se cambia el nombre del equipo que contiene el origen del vínculo.
  • Se cambian los recursos compartidos de red en el equipo de origen del vínculo.
  • El volumen que contiene el archivo de origen del vínculo se mueve a otro equipo dentro del mismo dominio.

El servicio de seguimiento de vínculos distribuidos también intenta mantener vínculos en las situaciones anteriores incluso cuando no se producen dentro de un dominio, es decir, son entre dominios o dentro de un grupo de trabajo. Los vínculos siempre se pueden mantener en estas situaciones cuando se cambia el recurso compartido de red en el equipo de origen del vínculo. También se pueden mantener cuando se mueve un origen de vínculo dentro de un equipo. Normalmente, los vínculos se pueden mantener cuando el origen del vínculo se mueve a otro equipo, pero esta forma de seguimiento es menos confiable a lo largo del tiempo.

La funcionalidad de seguimiento de vínculos se implementa principalmente en forma de los dos servicios del sistema siguientes:

  • Cliente de seguimiento de vínculos distribuidos.
  • Servidor de seguimiento de vínculos distribuidos

Cliente de seguimiento de vínculos distribuidos

El cliente de seguimiento de vínculos distribuidos se ejecuta en todos los equipos y administra las actividades de seguimiento de vínculos de ese equipo. Estas actividades incluyen la búsqueda de orígenes de vínculos y el procesamiento de movimientos de origen del vínculo. Cuando se mueve un origen de vínculo, el servicio pasa información al servidor de seguimiento de vínculos distribuidos que se ejecuta en controladores de dominio.

Servidor de seguimiento de vínculos distribuidos

El servidor de seguimiento de vínculos distribuidos se ejecuta en cada controlador de dominio de un dominio. El servicio acepta notificaciones de archivos y volúmenes que se mueven desde el servicio de seguimiento en un equipo y permite al cliente de seguimiento de vínculos distribuidos consultar la ubicación actual de un origen de vínculo.

Este servicio de servidor mantiene información en los controladores de dominio sobre volúmenes y archivos que se han movido. La información sobre los movimientos no puede aumentar más allá de un tamaño específico y se quita automáticamente si se vuelve innecesaria.

Los servicios de seguimiento de vínculos se exponen mediante las interfaces IShellLink e IOleLink . Por lo tanto, los métodos abreviados de shell los usan. Cuando se llama al método IShellLink::Resolve y no se encuentra el archivo de referencia, por ejemplo, cuando el usuario activa un acceso directo de shell, se llama automáticamente al servicio de seguimiento para buscar el archivo. Del mismo modo, cuando la implementación de IOleLink no encuentra un archivo, por ejemplo, en su método BindToSource , llama automáticamente al servicio de seguimiento.

Los servicios de seguimiento de vínculos distribuidos solo están disponibles en el sistema de archivos NTFS y solo están disponibles para orígenes de vínculo en NTFS 3.0 o posterior. Por lo tanto, si un origen de vínculo se mueve a un volumen del sistema de archivos FAT, se pierde la información de seguimiento. Además, si un origen de vínculo se mueve entre NTFS 3.0 o posterior, pero el equipo que realiza el traslado ejecuta una versión anterior de Windows, se pierde la información de seguimiento de vínculos. Cuando se pierde la información de seguimiento de vínculos, no se produce ningún daño en el propio archivo de origen del vínculo, simplemente no es rastreable por los servicios de seguimiento de vínculos distribuidos.

Para obtener la versión NTFS de un volumen, abra un símbolo del sistema con derechos de acceso de administrador y ejecute el siguiente comando:

fsutil fsinfo ntfsinfoX:

donde X es la letra de unidad del volumen.

No se mantienen vínculos a archivos en medios extraíbles. Además, el servicio de seguimiento no reconoce un nuevo volumen del sistema de archivos NTFS hasta que se vuelva a arrancar el sistema. Un nuevo volumen podría estar disponible debido a la nueva creación de particiones, volver a crear particiones, volver a formatear un volumen del sistema de archivos FAT al sistema de archivos NTFS o conectar una nueva unidad externa.