1

如何检查哪些应用程序启用了 SMLoginItemSetEnabled?

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

我在下面运行 2 个应用程序,但它无法在登录时启动 => 我需要检查帮助应用程序是否启用。

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

https://github.com/keith/L​​oginItemTest

4

2 回答 2

1

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

- (BOOL)launchAtLoginWithBundleId:(NSString*)bundleId {
    CFDictionaryRef dict = SMJobCopyDictionary(kSMDomainUserLaunchd, (CFStringRef)bundleId);
    if (dict == NULL) {
        return NO;
    }
    CFRelease(dict);
    return YES;
}
于 2015-08-28T17:23:49.450 回答
0

苹果不推荐使用

SMJobCopy字典

@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];
于 2017-05-16T19:40:51.390 回答