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 LoginItems
Ordnern 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:
[aus Gründen der Übersichtlichkeit bearbeitet 2013-03-20 11:22 PT]
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>
(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)..)
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.plist
in 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 list
Sie , das jeden Dienst auf Ihrem Computer ausdruckt. Für ein Login-Objekt im internen Contents/Library/LoginItems
Verzeichnis 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).
Dan
kein Hang
kein Hang
Dan
fs_usage
, also nahm ich an, dass dies der Fall war.Dan
Zo219