Desativando itens de inicialização que são executados por conta própria

9

Encontrei alguns aplicativos que parecem capazes de se iniciar na inicialização, apesar de não aparecerem nos lugares habituais ...

- 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

Pelo menos alguns desses aplicativos (por exemplo, Dia Um e Pausas - ambos da Mac App Store) parecem estar lançando um item de suas próprias LoginItemspastas internas :

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

Como bons cidadãos, os dois aplicativos permitem que você desabilite o comportamento de iniciar o login, mas é desconcertante que esse comportamento não pareça ser controlável a partir de uma preferência de todo o sistema, e eu gostaria de uma maneira de identificar / controlar sistematicamente esses itens de login. Portanto, a pergunta (em duas partes) é:

  • O que realmente está controlando se / como esses itens de inicialização específicos do aplicativo estão sendo ativados e
  • Como posso obter um inventário de todos esses itens de login?

[editado para maior clareza 20-03-2013 11:22 PT]

Dan
fonte
Por que você acha que não é uma duplicata (ajuda a evitar obter as mesmas respostas novamente)? E suponho que você esteja enfrentando isso com aplicativos específicos. Você pode listá-los na sua pergunta, por favor?
nohillside
E acho que você está enganando a coisa do primeiro dia. O que você listou acima é apenas o aplicativo Lembrete (menulet), que começa se o lançamento no login estiver marcado. Não é uma pasta LaunchAgents / Daemons em área restrita.
nohillside
Obrigado pelo esclarecimento. Posso estar enganado sobre o diagnóstico, mas foi aí que vi atividade ao assistir à ação "desativar" fs_usage, então presumi que era isso que estava acontecendo.
Dan
E não é uma bobagem, porque a outra pergunta foi respondida com a lista padrão de itens de login que eu listei no início da pergunta. As aplicações que eu estou vendo isso acontecer com (incluindo o primeiro dia) não aparecem em meus Itens sessão ou os diretórios ...
Dan

Respostas:

8

O primeiro dia parece armazenar o item de login em /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

Alterar isso para true no mesmo arquivo desativou:

<key>com.dayoneapp.dayone-agent</key>
<dict>
    <key>Disabled</key>
    <false/>
</dict>
Lri
fonte
1
Bom - parece que essa é a resposta. Ainda estou confuso por que isso não aparece em nenhum lugar óbvio: não está no painel de preferências Itens de logon (concedido, seria necessário haver uma nova seção para todos os usuários) ... não em nenhuma das pastas de inicialização ... nem mesmo em Lingon. Por curiosidade, como você sabia onde procurar?
Dan
Eu dirigi o fseventer quando abri o primeiro dia pela primeira vez.
Lri
Obrigado por compartilhar seus resultados de investigação! Às vezes, também uso o fseventer para aplicativos de monitoramento de FS.
porg
2

(Não se trata dos itens de login visíveis pelo usuário nas Preferências de sistemas de usuários e grupos)

O conteúdo / biblioteca / itens de login / oculto no pacote de aplicativos é o que parece ser a implementação da abordagem da Apple para aplicativos em área restrita.

A dica do @ user495470 sobre o armazenamento da referência do item de login em /var/db/launchd.db/ agora parece estar extinta no macOS 10.12

A direção da Apple parece estar se encaminhando para a abordagem independente do aplicativo, onde os LaunchDaemons, LaunchAgents e StartupItems podem estar fora dos limites no futuro, pois os aplicativos Mac podem precisar de uma área restrita em algum momento (conjectura pessoal, não fato). Por outro lado, a API CFPreferences e o envio do AppleEvents para o lançamento foram preteridos ...

Ref:

Enquanto no passado era fácil procurar nas pastas mencionadas informações de inicialização de inicialização (por Dan), esse novo modelo em área restrita, embora teoricamente mais seguro operacionalmente, oculta a capacidade de inicialização de um aplicativo (ou de Trojan?) De todos os usuários normais e a maioria dos superusuários que sabem procurar nos diretórios do sistema. Encontrar esses itens de login ocultos agora se tornou uma PITA (dor no aplicativo), passando pela pasta Aplicativos ou abrindo manualmente os pacotes de aplicativos procurando em / Conteúdo / Biblioteca / uma pasta "LoginItems" e seu conteúdo. Para a solução no nível do usuário, encontrei uma ferramenta que lista os itens de login incorporados do pacote de aplicativos chamados CleanMyMac (pode desativá-los ou ativá-los. Cuidado, obtenha apenas este aplicativo da empresa. Existem versões rachadas disponíveis que realmente carregam um vírus de maneira muito semelhante à forma como os itens de login agora funcionam (ironia) ..) CleanMyMac mostrando o seletor de itens de login

Observe como esses itens, habilitados ou desabilitados, não fazem parte dos "Itens de login" visíveis pelo usuário nas Preferências do sistema "Usuários e grupos":

Se você é como eu e está trabalhando em nível de código, aqui está um guia consolidado de implementação (por Tim Schroeder 2013): O lançamento no projeto Sandbox de login

William Cerniuk
fonte