3 votes

Comment savoir si un processus s'est automatiquement démarré après la connexion?

(J'ai ajouté une mise à jour à la fin.)

Mes questions connexes :

Comment supprimer les éléments de connexion masqués de backgrounditems.btm?

Un travail launchd sans fichier plist, comment ça fonctionne et comment trouver ce qui le déclenche?

Même si les questions ci-dessus sont connexes, elles ne sont pas identiques à cette question.

Je suis sous MacOS Big Sur.

J'ai découvert que de nombreuses applications téléchargées en ligne se lancent automatiquement d'une certaine manière. J'ai beaucoup de mal à trouver comment elles se lancent automatiquement.

Prenons un exemple, com.xunlei.Thunder.ThunderHelper se lance toujours automatiquement après le démarrage du système.

Jusqu'à présent, j'ai découvert deux éléments liés à ce démarrage automatique du processus.

Un provient d'un travail launchd (sans fichier .plist) :

$ launchctl list | grep -i thunder
405 0   com.xunlei.Thunder.ThunderHelper

$ launchctl print gui/$(id -u)/com.xunlei.Thunder.ThunderHelper
...
    path = (soumis par otherbsd.330)
    identifiant du programme = com.xunlei.Thunder.ThunderHelper
    identifiant du bundle parent = com.xunlei.Thunder
...

L'autre est un élément de connexion masqué dans le fichier $HOME/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm. REMARQUE : ce élément de connexion n'est PAS affiché dans les Préférences Système. Je l'ai trouvé en utilisant un script Python mentionné dans une autre question en détail python3 ./bgiparser.py -f backgrounditems.btm -c.

Je ne trouve PAS d'élément lié au processus thunder dans les répertoires suivants :

/Library/StartupItems
/System/Library/StartupItems
~/Library/LaunchAgents/
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons

Je ne lance pas l'application thunder moi-même.

MAINTENANT, pour empêcher le démarrage automatique, j'ai fait ce qui suit :

launchctl stop com.xunlei.Thunder.ThunderHelper
launchctl remove com.xunlei.Thunder.ThunderHelper
kill -9 405
rm "$HOME/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm"

Encore une fois, je n'ouvre pas l'application Thunder moi-même. Maintenant, j'éteins le système MacOS, débranche le câble d'alimentation, rebranche le câble d'alimentation, redémarre le système MacOS.

Magiquement, l'application helper de Thunder se lance automatiquement à nouveau. Il a recréé un travail launchd en cours d'exécution. Il a recréé un élément de connexion masqué dans un nouveau fichier backgrounditems.btm.

Je suis très confus, comment fait-il ça ?

Si j'ouvre manuellement l'application et qu'il crée ensuite un travail launchd et un élément de connexion, ça me va. MAIS je ne lance pas du tout l'application. J'ai supprimé le fichier de connexion. J'ai arrêté le processus lié.

Quelqu'un peut-il m'aider à trouver comment ce programme se lance automatiquement ?

Un grand merci.

PS :

Je sais qu'il y a les fichiers et répertoires suivants :

/Applications/Thunder.app/Contents/Library/LaunchServices/com.xunlei.Thunder.HelperTool

/Applications/Thunder.app/Contents/Library/LoginItems/ThunderHelper.app/

Je sais que je pourrais les supprimer (bien que je ne l'ai pas encore essayé). Mais je veux comprendre comment ils se lancent automatiquement au lieu de les supprimer. Cheers.

Mise à jour

J'ai découvert une vérité effrayante sur ce problème.

Après avoir tué/supprimé tout processus Thunder en cours (y compris rm backgrounditems.btm).

J'ai déplacé Thunder.app vers un autre répertoire avec la commande suivante :

$ mkdir -p $HOME/tmp/thunder_tmp/
$ mv /Applications/Thunder.app $HOME/tmp/thunder_tmp/

Et puis redémarrer le système MacOS. La chose la plus étrange est arrivée. L'application helper de Thunder a redémarré automatiquement depuis le nouveau chemin et a ajouté les éléments de connexion avec le nouveau chemin au nouveau fichier backgrounditems.btm :

# Partie du fichier backgrounditems.btm décodé :
{
    "name": "ThunderHelper.app",
    "path": "/Users/myuser/tmp/thunder_tmp/Thunder.app/Contents/Library/LoginItems/ThunderHelper.app"
},

Il semble que MacOS recherche sur tout mon disque dur pour trouver toutes les applications d'aide et les lance automatiquement, puis les ajoute automatiquement en tant qu'élément de connexion masqué dans les éléments de connexion. (peut-être pas vrai)

Si c'est vrai, ce serait très effrayant !

Comment puis-je empêcher MacOS de faire cette chose effrayante ? Pourquoi recherche-t-il à chaque démarrage sur l'ensemble de mon disque dur pour trouver une application d'aide à démarrer et l'ajouter aux éléments de connexion ? C'est incroyable.

4voto

Jose Chavez Points 645

Ce n'est en réalité pas effrayant - il s'agit d'un comportement intentionnel, bien défini et documenté.

Les applications sur macOS peuvent être accompagnées d'une application auxiliaire qui s'exécute en arrière-plan. L'application auxiliaire est stockée dans le package de l'application principale et est gérée par le cadre de gestion de services.

Lorsque vous ajoutez une application à un ordinateur macOS, le système examine le package de l'application pour déterminer comment cette application se rapporte au système. En particulier des choses telles que:

  • quels types de fichiers ce programme peut ouvrir
  • quel icône doit être affiché
  • ce programme nécessite-t-il une application auxiliaire en arrière-plan

Comme vous pouvez installer des applications dans n'importe quel dossier sur un Mac, cette détection et cette inspection se produisent partout. En particulier, vous n'êtes pas obligé d'installer des applications dans le dossier /Applications. Cela ne nécessite pas que le système "recherche l'intégralité du disque dur", car les packages d'application sont déjà spécialement marqués. Lorsqu'un package d'application est ajouté au système de fichiers (ou déplacé), le système en prend connaissance et conserve les informations susmentionnées.

L'enregistrement des applications auxiliaires en les incluant dans le package d'application est en fait la méthode recommandée pour les applications sandboxées (par exemple provenant de l'App Store Mac), car ces applications ne sont pas autorisées à créer des fichiers en dehors du sandbox.

Si l'application ne propose pas elle-même une option pour désactiver l'application auxiliaire, c'est parce que le développeur de l'application a décidé que leur application ne peut pas fonctionner avec l'application auxiliaire. La manière correcte de désinstaller l'application auxiliaire est de désinstaller l'application principale.

Pour désactiver manuellement l'élément de connexion, la méthode la moins "agressive" est de modifier le fichier Info.plist à l'intérieur du package de l'application. Utilisez l'Éditeur de listes de propriétés pour rechercher la clé SMLoginItemSetEnabled et changez la valeur booléenne associée en false.

Vous pourriez aussi être plus agressif et supprimer manuellement le contenu du dossier .bundle/Contents/Library/LoginItems.

Quoi qu'il en soit, vous risquez que l'application elle-même ne fonctionne pas - et vous devrez être prudent lors des mises à jour de l'application qui pourraient inverser ce changement.

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