로그인시 앱 실행을 중지시키는 방법은 무엇입니까?


5

나는 응용 프로그램을 만들었습니다.이 응용 프로그램은 다음을 사용하여 로그인시 실행되도록 설정합니다. SMLoginItemSetEnabled. 이리 그것이 사용하는 코드입니다. 내 질문은, 로그인시이 앱이 실행되지 않도록 수동으로 제거하려면 어떻게해야합니까? ?

앱이 '로그인 항목'에 표시되지 않거나 /Library/LaunchAgents, 또는 /Library/LaunchDaemons 또는 /Users/username/Library/LaunchAgents, 또는 /Users/username/Library/LaunchDaemons 폴더. 나는 주변에서 둘러 보았다. /Library/PreferencesPreferecePanes,하지만 나는 아무것도 발견하지 못했습니다. 앱이 로그인 할 때로드됩니다.


콘솔에서 디스크 (응용 프로그램)를 제거하면 어떻게됩니까?
Martin Marconcini

앱을 삭제하면 (실행 중이 아닌 경우에도) 휴지통으로 이동할 수 있지만 휴지통을 비우면 앱이 삭제되지 않습니다.
Tarandeep Gill

이 문제에 대한 해결책을 찾았습니까? 같은 것을 궁금해합니다.
Klaas

일부는 다음과 같습니다 : /var/db/com.apple.xpc.launchd/disabled.$UID.plist
Klaas

답변:


2

도우미를 중지하고 제거 할 수 있어야합니다. launchd 명령 줄에서. Terminal.app를 열고 실행하십시오.

launchctl list | grep -i com.your.helper

세 번째 열에 job_label이 있으면 찾은 다음

sudo launchctl stop com.your.helper
sudo launchctl remove com.your.helper

매뉴얼 launchctl 찾을수있다 이리


0

그리고 당신이 도우미로 그것을 추가했다면, 당신이 말했듯이, 당신은 plist (나는 생각합니다)에서 그것을 볼 수 있어야합니다.

이것 좀보세요 :

-(BOOL)appIsPresentInLoginItems
{
    NSString *bundleID = @"com.madebynotion.myLoginHelper";
    NSArray * jobDicts = nil;
    jobDicts = (NSArray *)SMCopyAllJobDictionaries( kSMDomainUserLaunchd );
    // Note: Sandbox issue when using SMJobCopyDictionary()

    if ( (jobDicts != nil) && [jobDicts count] > 0 ) {

        BOOL bOnDemand = NO;

        for ( NSDictionary * job in jobDicts ) {

            if ( [bundleID isEqualToString:[job objectForKey:@"Label"]] ) {
                bOnDemand = [[job objectForKey:@"OnDemand"] boolValue];
                break;
            } 
        }

        CFRelease((CFDictionaryRef)jobDicts); jobDicts = nil;
        return bOnDemand;

    } 
    return NO;
}

출처: http://blog.mcohen.me/2012/01/12/login-items-in-the-sandbox/


1
답장 마틴 주셔서 감사합니다. 하지만 수동으로 (프로그램을 사용하지 않고) 제거하는 방법을 찾고 있습니다. 이 PList 파일은 시스템에 어디에 저장되어 있습니까?
Tarandeep Gill

오, 문제 없습니다. 내가 코드를 추가하는 이유는 코드가 무엇을하는지 보는 것입니다. 어쩌면 앱의 sanboxed 디렉토리에 있어야 할 것입니다 ... 그러나 나는 그것에 대해 결코 생각하지 않았습니다. 내가 좀 봐 '
Martin Marconcini

0

로그인 항목은 ~ / Library / Preferences / com.apple.loginitems.plist에 저장되며 시스템 환경 설정 - & gt; 사용자 & amp; 그룹스 & gt; 사이드 바에있는 사용자 계정 - & gt; 로그인 항목 탭.


그게 문제 야. 앱이 로그인 항목 탭에 표시되지 않고에 표시되지 않습니다. ~/Library/Preferences/com.apple.loginitems.plist 어느 한 쪽!
Tarandeep Gill

0

앱을 삭제하면 (실행 중이 아닌 경우에도) 휴지통으로 이동할 수 있지만 휴지통을 비우면 앱이 삭제되지 않습니다.

휴지통에있을 때 단일 사용자 모드로 Mac을 다시 시작하십시오 (시작하는 동안 cmd + 에스 ) : 터미널 창에서 열리 며

sudo rm -Rf ~/.Trash/*

언론 들어가다 그런 다음 정상적으로 다시 시작하십시오.


0

항목 실행을 중지 할 수 있습니다. launchctl disable gui/$UID/ 번들 ID .

번들 ID를 모르는 경우 다음을 입력하여 찾을 수 있습니다. launchctl list. 목록에 표시됩니다. 모든 첫 번째 열에 PID와 함께 사용자의 프로세스를 실행합니다. 그래서, 당신이 이것을 본다면 :

$ 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

... 액티비티 모니터를 사용하여 원하지 않는 앱의 PID가 번들 ID를 만드는 189임을 확인할 수 있습니다. com.example.ExampleDaemon. 그때:

launchctl disable gui/$UID/com.example.ExampleDaemon

그게 전부 야. 그곳에 ~이다. 여전히 비활성화 된 디스크의 로그인 항목에 대한 기록입니다. 제거하고 싶거나 더 배우고 싶다면 계속 읽으십시오.


반 직관적으로 (그러나 즐겁게?), 목록은 여기에 저장됩니다 :

/var/db/com.apple.xpc.launchd/disabled.$UID.plist

이 파일은 다음과 같이 보일 것입니다 :

<?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>

예, false 해당 번들 ID가있는 앱 할까요 시작시 시작할 수 있습니다. 실행 후 launchctl disable, false ~로 변경됩니다. true. (내가 알 수있는 한 launchd는이 파일들을 바로 쓰지 않기 때문에 재부팅 할 때까지이 파일을 볼 수 없습니다.) 다음 명령을 사용하여 비활성화 된 항목을 볼 수 있습니다 :

launchctl print-disabled gui/$UID

여기에 저장된 각 로그인 항목에 대한 추가 정보가 있습니다. 하지만 그것을 제거해도 항목 실행이 중지되지는 않습니다.

/var/db/com.apple.xpc.launchd/loginitems.$UID.plist

시스템을 실행하는 동안 변경 한 내용은 시스템 종료 / 재시작시에 덮어 씁니다. 그래서, 제가 말할 수있는 한, 항목을 완전히 제거하는 유일한 방법입니다. disabled.$UID.plist 단일 사용자 모드에서 재부팅하고 거기에서 편집하는 것입니다. 실행하지 않고도 launchctl disable, key / false 이 파일의 쌍은 로그인시 앱 실행을 중지시킵니다. 나는이 대답에서 단일 사용자 모드로 이러한 파일을 편집하기위한 지침을 포함하지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.