Wyłączanie elementów startowych, które działają same

9

Znalazłem kilka aplikacji, które wydają się być w stanie uruchomić się przy starcie, mimo że nie pojawiają się w zwykłych miejscach ...

- 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

Przynajmniej niektóre z tych aplikacji (np. Dzień pierwszy i Pauza - obie z Mac App Store) wydają się uruchamiać element ze swoich wewnętrznych LoginItemsfolderów:

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

Jako dobrzy obywatele, obie aplikacje pozwalają wyłączyć zachowanie przy uruchamianiu przy logowaniu, ale niepokojące jest to, że zachowanie to nie wydaje się być kontrolowane z preferencji ogólnosystemowych, a ja chciałbym sposób systematycznej identyfikacji / kontroli te elementy logowania. Tak więc (dwuczęściowe) pytanie brzmi:

  • Co faktycznie kontroluje, czy / jak aktywowane są te elementy uruchamiania specyficzne dla aplikacji, i
  • Jak mogę uzyskać spis wszystkich tych elementów logowania?

[zredagowano dla jasności 2013-03-20 11:22 PT]

Dan
źródło
Jak myślisz, dlaczego nie jest to duplikat (pomaga zapobiec ponownemu otrzymywaniu tych samych odpowiedzi)? Zakładam, że masz do czynienia z konkretnymi aplikacjami. Czy mógłbyś wymienić je w pytaniu?
nohillside
I myślę, że mylisz się w sprawie Pierwszego Dnia. To, co wymieniłeś powyżej, to tylko aplikacja Przypomnienie (menulet), która uruchamia się, jeśli zaznaczone jest uruchomienie przy logowaniu. To nie jest piaskownicowy folder LaunchAgents / Daemons.
nohillside
Dziękuję za wyjaśnienie. Może się mylę co do diagnozy, ale właśnie tam widziałem aktywność podczas oglądania akcji „wyłącz” fs_usage, więc założyłem, że o to chodzi.
Dan
I nie dupe, ponieważ na inne pytanie udzielono odpowiedzi ze standardową listą elementów logowania wymienionych na początku pytania. Aplikacje, które widzę, że tak się dzieje (w tym Dzień Pierwszy), nie pojawiają się w moich Elementach logowania ani w tych katalogach ...
Dan

Odpowiedzi:

8

Pierwszy dzień wydaje się przechowywać element logowania w /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

Zmiana tego na true w tym samym pliku wyłączyła go:

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>
Lri
źródło
1
Fajnie - wygląda na to, że to odpowiedź. Nadal jestem zaskoczony, dlaczego nie jest to nigdzie oczywiste: nie ma go w okienku preferencji elementów logowania (oczywiście, dla wszystkich użytkowników będzie potrzebna nowa sekcja) ... nie w żadnym z folderów uruchamiania ... nawet w Lingon. Z ciekawości skąd wiedziałeś, gdzie szukać?
Dan
Kiedy pierwszy raz otworzyłem Dzień Pierwszy, prowadziłem fseventer .
Lri
Dziękujemy za udostępnienie wyników dochodzenia! Czasami używam również fseventer do aplikacji do monitorowania FS.
porg
2

(Nie chodzi o widoczne dla użytkownika elementy logowania w preferencjach systemowych użytkowników i grup)

Zawartość / Biblioteka / LoginItems / zakopane w pakiecie aplikacji wydaje się być implementacją podejścia Apple'a do aplikacji w piaskownicy.

Wskazówka od @ user495470 na temat przechowywania referencji pozycji logowania w /var/db/launchd.db/ wydaje się być nieaktualna w macOS 10.12

Wydaje się, że kierunek Apple zmierza w kierunku samodzielnego podejścia do aplikacji, w którym elementy LaunchDaemons, LaunchAgents i StartupItems mogą być w przyszłości niedostępne, ponieważ aplikacje Mac mogą w pewnym momencie wymagać piaskownicy (domysł, nie fakt). Z drugiej strony API CFPreferences i wysyłanie AppleEvents do uruchomienia są przestarzałe ...

Ref:

Podczas gdy w przeszłości łatwo było szukać w wyżej wymienionych folderach informacji o uruchamianiu startowym (według Dana), ten nowy model w piaskownicy, chociaż teoretycznie bezpieczniejszy operacyjnie, ukrywa możliwości uruchamiania aplikacji (lub trojana?) Przed wszystkimi normalnymi użytkownikami i większością superużytkowników którzy wiedzą szukać w katalogach systemowych. Odnalezienie tych ukrytych elementów logowania stało się teraz PITA (ból w aplikacji), albo albo przeglądając folder aplikacji, albo ręcznie otwierając pakiety aplikacji w / Contents / Library / w poszukiwaniu folderu „LoginItems” i jego zawartości. Dla rozwiązania na poziomie użytkownika znalazłem narzędzie, które wyświetla osadzone w pakiecie elementy logowania o nazwie CleanMyMac (można je dezaktywować lub aktywować. Uważaj, pobierz tę aplikację tylko od firmy. Dostępne są wersje crackowane, które przenoszą wirusa w sposób bardzo podobny do działania elementów logowania (ironia) ..) CleanMyMac pokazuje selektor elementów logowania

I zauważ, że te elementy, włączone lub wyłączone, nie są częścią widocznego przez użytkownika elementu „Elementy logowania” w Preferencjach systemowych „Użytkownicy i grupy”:

Jeśli jesteś podobny do mnie i pracujesz nad tym na poziomie kodu, znajdziesz tutaj skonsolidowany przewodnik po implementacji (autor: Tim Schroeder 2013): Launch at Login Sandbox Project

William Cerniuk
źródło