Cuando se selecciona un único archivo, se abre una ventana de obtención de información y se elige una aplicación diferente, no predeterminada, este enlace de servicios de lanzamiento se guarda en el tenedor de recursos del propio archivo, en un 'usro'
(User Override). Hasta donde yo sé, el formato de este recurso es privado, determinado por Apple, y está sujeto a cambios. (Los caracteres en minúscula en el nombre OSType proporcionan una pista, ya que Apple reserva los tipos de archivo, códigos de creador y tipos de recursos con todos los caracteres en minúscula. Por ejemplo, 'icns'
(Icon Suite) tipo de recurso, 'ttxt'
(originalmente de Teach Text, pero ahora es el código creador (CFBundleSignature) de TextEdit.app), etc.).
Este recurso se crea utilizando las funciones del gestor de recursos para modificar la horquilla del archivo, que a su vez actualiza la fecha de modificación del archivo.
En la siguiente imagen se muestra un archivo de ejemplo con el que acabo de probar este procedimiento, abierto en Resorcerer. (Nota especial: se dará cuenta de que en la columna de la izquierda hay 2 tipos listados: 'TEXT'
y 'usro'
. De hecho, sólo hay una 'usro'
entrada; Resorcerer está mostrando que hay una 'TEXT'
porque se da cuenta de que el contenido en el tenedor de datos del archivo está basado en texto (un archivo de cabecera de código fuente), y por lo tanto está proporcionando un acceso conveniente a él). La segunda imagen muestra el contenido de este recurso, que básicamente contiene una ruta a la aplicación de destino que elegí.
Desde este 'usro'
El recurso User Override se guarda como parte del propio archivo, lo que explica por qué el Guía de programación de los servicios de lanzamiento: Elección de la preferencia de enlace para un archivo reclama lo siguiente:
Nota: Las preferencias de vinculación explícitas para elementos individuales no son específicas del usuario, sino de todo el sistema, es decir, siguen aplicándose al elemento en cuestión en el mismo ordenador, incluso si un usuario diferente se conecta.
Ahora, para ir un paso más allá. Si ahora hace clic en el botón Change All
para convertirlo en una anulación global, Launch Services eliminará el 'usro'
y en su lugar crear un enlace global que se almacena en el archivo com.apple.LaunchServices.plist (preferencias por usuario). Al eliminar el archivo 'usro'
se realiza mediante las funciones del gestor de recursos, que actualizará la fecha de modificación del archivo. Tenga en cuenta que, aunque elimina el 'usro'
recurso, no puede eliminar todo el tenedor de recursos. En la mayoría de los casos, quedarán 286 bytes en el fork de recursos, que es básicamente la cantidad mínima de espacio que ocupan la cabecera y el mapa de recursos.