12 votes

Désactiver les éléments de démarrage qui s'exécutent seuls

J'ai trouvé quelques applications qui semblent pouvoir se lancer toutes seules au démarrage, bien 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 disponibles sur le Mac App Store) semblent lancer un élément à partir de leur propre interface interne. LoginItems les dossiers :

/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 avoir un moyen d'identifier/contrôler systématiquement ces éléments de connexion. Donc, la question (en deux parties) est la suivante :

  • 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 articles de connexion ?

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

9voto

Fuzzy Purple Monkey Points 702

Day One 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

En changeant cette valeur en true dans ce même fichier, on l'a désactivé :

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>

2voto

Cerniuk Points 519

(Il ne s'agit pas des éléments de connexion visibles par l'utilisateur dans les préférences du système Utilisateurs et groupes).

Le fichier Contents/Library/LoginItems/ enfoui dans le paquet d'applications est ce qui semble être la mise en œuvre de l'approche d'Apple concernant les applications sandboxes.

L'astuce de @user495470 concernant le stockage de la référence de l'élément de connexion dans /var/db/launchd.db/ semble ne plus fonctionner sous MacOS 10.12.

La direction d'Apple semble se diriger vers une approche autonome des applications, où les LaunchDaemons, LaunchAgents et StartupItems pourraient être interdits à l'avenir, car les applications Mac pourraient devoir être mises en bac à sable à un moment donné (conjecture personnelle, pas de fait). D'autre part, l'API CFPreferences et l'envoi d'AppleEvents pour le lancement sont dépréciés...

Réf :

Alors que dans le passé, il était facile de chercher dans les dossiers susmentionnés des informations sur le lancement du démarrage (selon Dan), ce nouveau modèle sandbox, bien que théoriquement plus sûr sur le plan opérationnel, cache la capacité de démarrage d'une application (ou d'un cheval de Troie ?) à tous les utilisateurs normaux et à la plupart des superutilisateurs qui savent regarder dans les répertoires du système. Trouver ces éléments de connexion cachés est maintenant devenu un PITA (pain in the app) avec soit un grep'ing dans le dossier Applications, soit l'ouverture manuelle des paquets d'applications en cherchant dans /Contents/Library/ un dossier "LoginItems" et son contenu. Pour la solution au niveau de l'utilisateur, j'ai trouvé un outil qui liste les éléments de connexion intégrés au paquet d'applications appelé CleanMyMac (peut les désactiver ou les activer. Soyez prudent, n'obtenez cette application qu'auprès de la société. Il existe des versions piratées qui transportent en fait un virus d'une manière très similaire au fonctionnement actuel de Login Items (ironie) ) CleanMyMac showing Login Items picker

Et remarquez que 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 cela au niveau du code, un guide consolidé de mise en œuvre est ici (par Tim Schroeder 2013) : Le lancement à Login Sandbox Project

2voto

nneonneo Points 2100

/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist n'existe plus dans les versions récentes de MacOS (au moins depuis MacOS 12) ; à la place, les priorités de connexion sont maintenant stockées dans le fichier /var/db/com.apple.xpc.launchd/disabled.$UID.plist .

Pour obtenir une liste complète, exécutez launchctl list qui imprime tous les services de votre machine. Pour un élément de connexion dans la base de données interne d'une appli Contents/Library/LoginItems l'identifiant de service doit être l'identifiant de regroupement de l'élément de connexion ( CFBundleIdentifier ), que vous pouvez obtenir à partir de la page d'accueil de l'article. Contents/Info.plist . Vous pouvez confirmer que cet identifiant apparaît dans launchctl list .

Pour le désactiver, exécutez launchctl disable gui/$UID/<bundle id> . Par exemple, pour désactiver l'exécution au démarrage de WireGuard (située à l'adresse /Applications/WireGuard.app/Contents/Library/LoginItems/WireGuardLoginItemHelper.app ), qui, à partir de la version 1.0.15, n'avait pas de préférence pour désactiver le démarrage automatique, vous devez exécuter la commande suivante

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

(Dans un terminal, vous pouvez littéralement taper $UID pour obtenir votre ID utilisateur actuel).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X