Deshabilitar elementos de inicio que se ejecutan solos

He encontrado un par de aplicaciones que parecen poder iniciarse solas al iniciarse, a pesar de que no aparecen en los lugares habituales...

- Login Items (in the Users preference pane)
- /Library/LaunchAgents
- /Library/LaunchDaemons
- /Library/StartupItems
- /System/Library/LaunchAgents
- /System/Library/LaunchDaemons
- /System/Library/StartupItems
- ~/Library/LaunchAgents
- ~/Library/LaunchDaemons
- ~/Library/StartupItems

Al menos algunas de estas aplicaciones (p. ej., Day One y Pauses, ambas de Mac App Store) parecen estar iniciando un elemento desde sus propias LoginItemscarpetas internas:

/Applications/Day One.app/Contents/Library/LoginItems/Day One Reminders.app
/Applications/Pauses.app/Contents/Library/LoginItems/PausesLauncher.app

Como buenos ciudadanos, ambas aplicaciones le permiten deshabilitar el comportamiento de inicio al iniciar sesión, pero es desconcertante que este comportamiento no parezca ser controlable desde una preferencia de todo el sistema, y ​​me gustaría una forma de identificar/controlar sistemáticamente estos elementos de inicio de sesión. Entonces, la pregunta (de dos partes) es:

  • Qué es lo que realmente controla si estos elementos de inicio específicos de la aplicación se activan y cómo se activan, y
  • ¿Cómo puedo obtener un inventario de todos estos elementos de inicio de sesión?

[editado para mayor claridad 2013-03-20 11:22 PT]

¿Por qué crees que no es un duplicado (ayuda a evitar obtener las mismas respuestas nuevamente)? Y supongo que está experimentando esto con aplicaciones específicas, ¿podría enumerarlas en su pregunta, por favor?
Y creo que te estás confundiendo con lo del Día Uno. Lo que enumeró anteriormente es solo la aplicación Recordatorio (menulet) que se inicia si se marca el inicio al iniciar sesión. No es una carpeta LaunchAgents/Daemons en un espacio aislado.
Gracias por la aclaración. Puede que me equivoque con el diagnóstico, pero ahí es donde vi actividad al ver la acción de "desactivar" con fs_usage, así que asumí que eso era lo que estaba pasando.
Y no es un engaño porque la otra pregunta se respondió con la lista estándar de elementos de inicio de sesión que enumeré al comienzo de la pregunta. Las aplicaciones con las que veo que esto sucede (incluido el primer día) no aparecen en mis elementos de inicio de sesión ni en esos directorios...
¿Qué sucede si elimina estas aplicaciones del Centro de notificaciones?

Respuestas (3)

Day One parece almacenar el elemento de inicio de sesión en /var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist:

$ /usr/libexec/PlistBuddy -c 'Print _com.apple.SMLoginItemBookmarks:com.dayoneapp.dayone-agent' /var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist
book 0(UserslaurTorrents
                        Day One.apContentsLibrary
LoginItemsDay One Reminders.app $4HXh?kld ????$A????H???A?1M?$5DF7A03E-A7FB-3E80-B61D-F10CD8BF7B5D?/?0c75ae904b0f99cb3a794e7360629c822a0f4a14;00000000;0000000000000020;com.apple.app-sandbox.read-write;00000001;01000002;0000000000641712;/users/lauri/torrents/day one.app/contents/library/loginitems/day one reminders.app??????D|@l 0 ? ? ? ?  0 <???????D

Cambiar esto a verdadero en ese mismo archivo lo deshabilitó:

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>
Bien, parece que esa es la respuesta. Todavía estoy desconcertado por qué esto no aparece en ningún lugar obvio: no está en el panel de preferencias Elementos de inicio de sesión (concedido, tendría que haber una nueva sección para todos los usuarios)... ni en ninguna de las carpetas de inicio... ni siquiera en Lingon. Por curiosidad, ¿cómo supiste dónde buscar?
Corrí fseventer cuando abrí Day One por primera vez.
¡Gracias por compartir los resultados de su investigación! A veces también uso fseventer para aplicaciones de monitoreo de FS.

(Esto no se trata de los Elementos de inicio de sesión visibles para el usuario en las Preferencias del sistema de Usuarios y grupos)

El Contents/Library/LoginItems/ enterrado en el paquete de la aplicación es lo que parece ser la implementación del enfoque de Apple para las aplicaciones de espacio aislado.

El consejo de @user495470 sobre el almacenamiento de la referencia del elemento de inicio de sesión en /var/db/launchd.db/ parece haber desaparecido en macOS 10.12

La dirección de Apple parece dirigirse hacia el enfoque autónomo de la aplicación donde LaunchDaemons, LaunchAgents y StartupItems pueden estar fuera de los límites en el futuro, ya que es posible que las aplicaciones de Mac deban estar en un espacio aislado en algún momento (conjetura personal, no hecho). Por otro lado, la API CFPreferences y el envío de AppleEvents para iniciar están en desuso...

Árbitro:

Si bien en el pasado era fácil buscar en las carpetas antes mencionadas la información de inicio de inicio (según Dan), este nuevo modelo de espacio aislado, aunque en teoría es más seguro desde el punto de vista operativo, oculta la capacidad de inicio de una aplicación (¿o troyano?) de todos los usuarios normales y la mayoría de los superusuarios. que saben buscar en los directorios del sistema. Encontrar estos Elementos de inicio de sesión ocultos ahora se ha convertido en un PITA (dolor en la aplicación) con grep'ing su camino a través de la carpeta Aplicaciones o manualmente paquetes de aplicaciones abiertos buscando en /Contents/Library/ para una carpeta "LoginItems" y su contenido. Para la solución a nivel de usuario, encontré una herramienta que enumera los elementos de inicio de sesión integrados del paquete de aplicaciones llamado CleanMyMac(Puede desactivarlos o activarlos. Tenga cuidado, solo obtenga esta aplicación de la compañía. Hay versiones descifradas disponibles que en realidad contienen un virus de una manera muy similar a cómo funcionan ahora los Elementos de inicio de sesión (ironía).)CleanMyMac mostrando el selector de elementos de inicio de sesión

Y observe cómo estos elementos, habilitados o deshabilitados, no forman parte de los "Elementos de inicio de sesión" visibles para el usuario en las Preferencias del sistema de "Usuarios y grupos":

Si es como yo y está trabajando en esto a nivel de código, aquí hay una guía consolidada para la implementación (por Tim Schroeder 2013): The Launch at Login Sandbox Project

/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plistya no existe en las versiones recientes de macOS (al menos desde macOS 12); en cambio, las anulaciones de inicio de sesión ahora se almacenan en /var/db/com.apple.xpc.launchd/disabled.$UID.plist.

Para obtener una lista completa, ejecute launchctl list, que imprime todos los servicios en su máquina. Para un elemento de inicio de sesión en el directorio interno de una aplicación Contents/Library/LoginItems, el identificador de servicio debe ser el identificador de paquete del elemento de inicio de sesión ( CFBundleIdentifier), que puede obtener del archivo Contents/Info.plist. Puede confirmar que este identificador aparece en launchctl list.

Para deshabilitar, ejecute launchctl disable gui/$UID/<bundle id>. Por ejemplo, para deshabilitar WireGuard run-at-startup (ubicado en /Applications/WireGuard.app/Contents/Library/LoginItems/WireGuardLoginItemHelper.app), que a partir de la versión 1.0.15 no tenía preferencia para deshabilitar el inicio automático, ejecutaría

launchctl disable gui/$UID/com.wireguard.macos.login-item-helper

(En una terminal, puede escribir echo $UIDpara obtener su ID de usuario actual).