Możesz zatrzymać uruchomienie elementu za pomocą .launchctl disable gui/$UID/bundle-id
Jeśli nie znasz identyfikatora pakietu, możesz go znaleźć, pisząc launchctl list
. Spowoduje to wyświetlenie listy wszystkich procesów uruchomionych przez użytkownika wraz z ich identyfikatorami PID w pierwszej kolumnie. Więc jeśli widziałeś to:
$ launchctl list
- 0 com.apple.SafariHistoryServiceAgent
277 0 com.apple.Finder
- 0 com.apple.quicklook
- 0 com.apple.parentalcontrols.check
[…]
189 0 com.example.ExampleDaemon
- 0 com.apple.java.InstallOnDemand
… Możesz użyć Monitora aktywności, aby potwierdzić, że identyfikator PID niepożądanej aplikacji to 189, co stanowi identyfikator jej pakietu com.example.ExampleDaemon
. Następnie:
launchctl disable gui/$UID/com.example.ExampleDaemon
to jest to! Na dysku jest nadal zapisany element logowania, po prostu wyłączony. Jeśli chcesz go wyczyścić lub po prostu chcesz dowiedzieć się więcej, czytaj dalej.
Wbrew intuicji (ale zabawnie?) Lista jest zapisywana tutaj:
/var/db/com.apple.xpc.launchd/disabled.$UID.plist
Ten plik będzie wyglądał mniej więcej tak:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.example.ExampleDaemon</key>
<false/>
</dict>
</plist>
Tak, false
oznacza to, że aplikacja o tym identyfikatorze pakietu powinna zostać uruchomiona podczas uruchamiania. Po uruchomieniu launchctl disable
The false
zmieni się true
. (O ile mi wiadomo, uruchomione nie zapisuje od razu tych plików, więc możesz tego nie zobaczyć, dopóki nie uruchomisz ponownie.) Za pomocą tego polecenia możesz zobaczyć wyłączone elementy:
launchctl print-disabled gui/$UID
Jest tam także kilka dodatkowych informacji o każdym zapisanym tutaj elemencie logowania, ale usunięcie go nie powstrzyma uruchomienia elementu:
/var/db/com.apple.xpc.launchd/loginitems.$UID.plist
Wszelkie zmiany wprowadzone podczas działania systemu zostaną zastąpione po wyłączeniu / ponownym uruchomieniu. O ile wiem, jedynym sposobem na całkowite usunięcie elementu disabled.$UID.plist
jest ponowne uruchomienie w trybie pojedynczego użytkownika i dokonanie tam edycji. Nawet bez uruchomienia launchctl disable
usunięcie key
/ false
pary z tego pliku powstrzymuje aplikację przed uruchomieniem przy logowaniu. W tej odpowiedzi nie dołączę instrukcji dotyczących edycji tych plików w trybie pojedynczego użytkownika.