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 LoginItems
carpetas 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:
[editado para mayor claridad 2013-03-20 11:22 PT]
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>
(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).)
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.plist
ya 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 $UID
para obtener su ID de usuario actual).
Dan
sin ladera
sin ladera
Dan
fs_usage
, así que asumí que eso era lo que estaba pasando.Dan
Zo219