2015-05-30 2 views
1

Как проверить, какие приложения включают SMLoginItemSetEnabled?проверить, какие приложения разрешены SMLoginItemSetEnabled

Терминал или в какой папке находится файл?

Я запускаю 2 приложения ниже, но не может запускаться при входе в систему => Мне нужно, чтобы приложение-помощник проверки включало или нет.

http://martiancraft.com/blog/2015/01/login-items/

https://github.com/keith/LoginItemTest

ответ

1

Вы можете проверить статус Войти с помощью элемента SMJobCopyDictionary (или даже SMCopyAllJobDictionaries), как это:

- (BOOL)launchAtLoginWithBundleId:(NSString*)bundleId { 
    CFDictionaryRef dict = SMJobCopyDictionary(kSMDomainUserLaunchd, (CFStringRef)bundleId); 
    if (dict == NULL) { 
     return NO; 
    } 
    CFRelease(dict); 
    return YES; 
} 
0

компании Apple не рекомендует использовать

SMJobCopyDictionary

@discussion Содержимое возвращаемого словаря НЕ является представителем списка свойств на диске и не является стабильным с момента выпуска до выпуска. Эта процедура устарела и будет удалена в будущей версии. Замену не будет.

Лучше использовать SMCopyAllJobDictionaries метод

BOOL enabled = NO; 
NSArray *jobs = (NSArray*)SMCopyAllJobDictionaries(kSMDomainUserLaunchd); 

if (jobs || [jobs count]>0) { 
    for (NSDictionary *job in jobs) { 
     if ([[job objectForKey:@"Label"] isEqualToString:bundleId]) { 
      ret = [[job objectForKey:@"OnDemand"] boolValue]; 
      break; 
     } 
    } 
} 

[jobs release];