Désactiver les éléments de démarrage qui s'exécutent d'eux-mêmes

9

J'ai trouvé quelques applications qui semblent pouvoir se lancer au démarrage, malgré qu'elles n'apparaissent pas aux endroits habituels ...

- 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

Au moins certaines de ces applications (par exemple, Day One et Pauses - toutes deux du Mac App Store) semblent lancer un élément à partir de leurs propres LoginItemsdossiers internes :

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

En tant que bons citoyens, les deux applications vous permettent de désactiver le comportement de lancement à la connexion, mais il est déconcertant que ce comportement ne semble pas être contrôlable à partir d'une préférence à l'échelle du système, et j'aimerais un moyen d'identifier / contrôler systématiquement ces éléments de connexion. Donc, la question (en deux parties) est:

  • Qu'est-ce qui contrôle réellement si / comment ces éléments de lancement spécifiques à l'application sont activés, et
  • Comment puis-je obtenir un inventaire de tous ces éléments de connexion?

[édité pour plus de clarté 2013-03-20 11:22 PT]

Dan
la source
Pourquoi pensez-vous que ce n'est pas un doublon (aide à éviter d'obtenir à nouveau les mêmes réponses)? Et je suppose que vous rencontrez cela avec des applications spécifiques, pourriez-vous les énumérer dans votre question s'il vous plaît?
nohillside
Et je pense que vous vous trompez sur le premier jour. La chose que vous avez répertoriée ci-dessus n'est que l'application de rappel (menulet) qui démarre si le lancement à la connexion est coché. Ce n'est pas un dossier LaunchAgents / Daemons en bac à sable.
nohillside
Merci pour la clarification. Je peux me tromper sur le diagnostic, mais c'est là que j'ai vu l'activité en regardant l'action "désactiver" avec fs_usage, j'ai donc supposé que c'était ce qui se passait.
Dan
Et, pas un dupe parce que l'autre question a été répondue avec la liste standard des éléments de connexion que j'ai énumérés au début de la question. Les applications avec lesquelles cela se produit (y compris le premier jour) n'apparaissent pas dans mes éléments de connexion ou dans ces répertoires ...
Dan

Réponses:

8

Le premier jour semble stocker l'élément de connexion dans /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

Changer cela en vrai dans ce même fichier l'a désactivé:

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>
Lri
la source
1
Nice - on dirait que c'est la réponse. Je ne comprends toujours pas pourquoi cela n'apparaît nulle part évident: ce n'est pas dans le volet de préférences Éléments de connexion (d'accord, il faudrait une nouvelle section pour tous les utilisateurs) ... pas dans aucun des dossiers de lancement ... pas même à Lingon. Par curiosité, comment saviez-vous où chercher?
Dan
J'ai couru fseventer lorsque j'ai ouvert le premier jour pour la première fois.
Lri
Merci d'avoir partagé vos résultats d'enquête! J'utilise parfois aussi fseventer pour les applications de surveillance FS.
porg
2

(Il ne s'agit pas des éléments de connexion visibles par l'utilisateur dans les préférences des systèmes d'utilisateurs et de groupes)

Le contenu / bibliothèque / LoginItems / enfoui dans le bundle d'application est ce qui semble être la mise en œuvre de l'approche d'Apple pour les applications en bac à sable.

L'astuce de @ user495470 sur le stockage de la référence de l'élément de connexion dans /var/db/launchd.db/ semble désormais disparue dans macOS 10.12

La direction d'Apple semble se diriger vers l'approche autonome de l'application, où les LaunchDaemons, LaunchAgents et StartupItems pourraient être interdits à l'avenir, car les applications Mac pourraient devoir être mises en sandbox à un moment donné (conjecture personnelle, pas un fait). En revanche, l'API CFPreferences et l'envoi d'AppleEvents au lancement sont déconseillés ...

Réf:

Alors que dans le passé, il était facile de rechercher dans les dossiers susmentionnés des informations de lancement de démarrage (par Dan), ce nouveau modèle en bac à sable, bien que théoriquement plus sûr sur le plan opérationnel, cache la capacité de démarrage d'une application (ou cheval de Troie?) À tous les utilisateurs normaux et à la plupart des superutilisateurs. qui savent regarder dans les répertoires système. La recherche de ces éléments de connexion cachés est maintenant devenue un PITA (difficile dans l'application), soit en vous frayant un chemin dans le dossier Applications, soit en ouvrant manuellement les ensembles d'applications en recherchant dans / Contents / Library / un dossier "LoginItems" et son contenu. Pour la solution de niveau utilisateur, j'ai trouvé un outil qui répertorie les éléments de connexion intégrés au bundle d'application appelé CleanMyMac (peut les désactiver ou les activer. Soyez prudent, n'obtenez cette application que de la société. Il existe des versions fissurées qui portent en fait un virus d'une manière très similaire à la façon dont les éléments de connexion fonctionnent maintenant (ironie) ..) CleanMyMac montrant le sélecteur d'éléments de connexion

Et remarquez comment ces éléments, activés ou désactivés, ne font pas partie des "éléments de connexion" visibles par l'utilisateur dans les préférences système "Utilisateurs et groupes":

Si vous êtes comme moi et que vous travaillez au niveau du code, un guide consolidé de mise en œuvre est ici (par Tim Schroeder 2013): The Launch at Login Sandbox Project

William Cerniuk
la source