检查哪些应用程序启用了SMLoginItemSetEnabled

时间:2015-05-30 00:24:10

标签: macos service-management

如何检查启用SMLoginItemSetEnabled的应用程序?

终端或哪个文件夹,文件包含它?

我在下面运行了2个应用程序,但无法在login =>处启动我需要检查帮助应用程序启用与否。

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

https://github.com/keith/LoginItemTest

2 个答案:

答案 0 :(得分:1)

您可以使用SMJobCopyDictionary(或甚至SMCopyAllJobDictionaries)检查登录项状态,如下所示:

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

答案 1 :(得分: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];