Deaktivieren von Startelementen, die eigenständig ausgeführt werden

Ich habe ein paar Apps gefunden, die sich anscheinend beim Start selbst starten können, obwohl sie nicht an den üblichen Stellen erscheinen ...

- 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

Zumindest einige dieser Apps (z. B. Day One und Pauses – beide aus dem Mac App Store) scheinen ein Element aus ihren eigenen internen LoginItemsOrdnern zu starten:

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

Als gute Bürger können Sie mit beiden Apps das Start-bei-Anmeldung-Verhalten deaktivieren, aber es ist beunruhigend, dass dieses Verhalten nicht von einer systemweiten Einstellung kontrollierbar zu sein scheint, und ich hätte gerne eine Möglichkeit, es systematisch zu identifizieren / zu kontrollieren diese Login-Elemente. Die (zweiteilige) Frage lautet also:

  • Was steuert tatsächlich, ob/wie diese App-spezifischen Startelemente aktiviert werden, und
  • Wie kann ich eine Bestandsaufnahme all dieser Anmeldeobjekte erhalten?

[aus Gründen der Übersichtlichkeit bearbeitet 2013-03-20 11:22 PT]

(Beachten Sie, dass dies kein Dupe von „Deaktivieren von Startelementen ist, die ausgeführt werden, obwohl sie in der Liste „ Anmeldeelemente“ deaktiviert sind“ ;)
Warum denken Sie, dass es sich nicht um ein Duplikat handelt (hilft zu verhindern, dass Sie dieselben Antworten erneut erhalten)? Und ich nehme an, Sie erleben dies bei bestimmten Anwendungen. Könnten Sie sie bitte in Ihrer Frage auflisten?
Und ich glaube, Sie verwechseln die Day-One-Sache. Das, was Sie oben aufgelistet haben, ist nur die Reminder-App (Menü), die gestartet wird, wenn Launch-at-Login aktiviert ist. Es ist kein sandboxed LaunchAgents/Daemons-Ordner.
Danke für die Klarstellung. Ich kann mich in der Diagnose irren, aber dort habe ich Aktivitäten gesehen, als ich die Aktion "Deaktivieren" mit beobachtete fs_usage, also nahm ich an, dass dies der Fall war.
Und kein Dupe, denn die andere Frage wurde mit der Standardliste von Anmeldeelementen beantwortet, die ich zu Beginn der Frage aufgelistet habe. Die Anwendungen, bei denen das passiert (einschließlich Day One), erscheinen nicht in meinen Anmeldeobjekten oder diesen Verzeichnissen ...
Was passiert, wenn Sie diese Apps aus der Mitteilungszentrale entfernen?

Antworten (3)

Day One scheint das Anmeldeobjekt in /var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist zu speichern:

$ /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

Wenn Sie dies in derselben Datei auf „true“ ändern, wird sie deaktiviert:

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>
Schön - sieht so aus, als wäre das die Antwort. Ich bin immer noch verblüfft, warum dies nirgendwo offensichtlich auftaucht: Es befindet sich nicht im Einstellungsfenster für Anmeldeobjekte (zugegeben, es müsste einen neuen Abschnitt für alle Benutzer geben) ... nicht in einem der Startordner ... nicht einmal in Lingon. Aus Neugier, woher wusstest du, wo du suchen musst?
Ich habe fseventer ausgeführt, als ich Day One zum ersten Mal geöffnet habe.
Vielen Dank für das Teilen Ihrer Untersuchungsergebnisse! Ich verwende fseventer manchmal auch für FS-Überwachungsanwendungen.

(Hier geht es nicht um die für Benutzer sichtbaren Anmeldeobjekte in den Systemeinstellungen für Benutzer und Gruppen.)

Das im Anwendungspaket vergrabene Contents/Library/LoginItems/ scheint die Implementierung von Apples Ansatz für Sandbox-Apps zu sein.

Der Tipp von @user495470 zum Speichern der Login-Item-Referenz in /var/db/launchd.db/ scheint in macOS 10.12 nun nicht mehr zu existieren

Apples Richtung scheint in Richtung des App-unabhängigen Ansatzes zu gehen, bei dem die LaunchDaemons, LaunchAgents und StartupItems in Zukunft tabu sein könnten, da Mac-Apps möglicherweise irgendwann in eine Sandbox gestellt werden müssen (persönliche Vermutung, keine Tatsache). Auf der anderen Seite sind die CFPreferences API und das Senden von AppleEvents zum Start veraltet ...

Ref:

Während es in der Vergangenheit einfach war, in den oben genannten Ordnern nach Startinformationen (per Dan) zu suchen, verbirgt dieses neue Sandbox-Modell, obwohl es theoretisch sicherer im Betrieb ist, die Startfähigkeit einer App (oder eines Trojaners?) vor allen normalen Benutzern und den meisten Superusern die wissen, in den Systemverzeichnissen zu suchen. Das Auffinden dieser versteckten Login-Elemente ist jetzt zu einem PITA (Schmerz in der App) geworden, indem Sie sich entweder durch den Anwendungsordner suchen oder App-Bundles manuell öffnen, indem Sie in /Contents/Library/ nach einem "LoginItems" -Ordner und dessen Inhalt suchen. Für die Lösung auf Benutzerebene habe ich ein Tool namens CleanMyMac gefunden , das die eingebetteten Anmeldeelemente des App-Bundles auflistet(kann sie deaktivieren oder aktivieren. Seien Sie vorsichtig, holen Sie sich diese App nur von der Firma. Es gibt gecrackte Versionen, die tatsächlich einen Virus enthalten, auf eine Weise, die der Funktionsweise von Login Items sehr ähnlich ist (Ironie)..)CleanMyMac zeigt die Auswahl für Anmeldeobjekte

Beachten Sie, dass diese aktivierten oder deaktivierten Elemente nicht Teil der für den Benutzer sichtbaren „Anmeldeelemente“ unter den Systemeinstellungen „Benutzer & Gruppen“ sind:

Wenn Sie wie ich auf Codeebene arbeiten, finden Sie hier eine konsolidierte Anleitung zur Implementierung (von Tim Schroeder 2013): The Launch at Login Sandbox Project

/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plistin neueren macOS-Versionen nicht mehr vorhanden (spätestens seit macOS 12); Stattdessen werden die Anmeldeüberschreibungen jetzt in gespeichert /var/db/com.apple.xpc.launchd/disabled.$UID.plist.

Um eine vollständige Liste zu erhalten, führen launchctl listSie , das jeden Dienst auf Ihrem Computer ausdruckt. Für ein Login-Objekt im internen Contents/Library/LoginItemsVerzeichnis einer App sollte die Service-ID die Bundle-ID des Login-Objekts ( CFBundleIdentifier) sein, die Sie aus der Contents/Info.plist. Sie können bestätigen, dass diese Kennung in angezeigt wird launchctl list.

Führen Sie zum Deaktivieren launchctl disable gui/$UID/<bundle id>. Um beispielsweise WireGuard Run-at-Startup (zu finden unter /Applications/WireGuard.app/Contents/Library/LoginItems/WireGuardLoginItemHelper.app) zu deaktivieren, das ab Version 1.0.15 keine Einstellung zum Deaktivieren des Autostarts hatte, würden Sie ausführen

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

(In einem Terminal können Sie eingeben echo $UID, um Ihre aktuelle Benutzer-ID zu erhalten).