获取OS X上的所有用户

Tri*_*ert 2 cocoa nstableview

所以我想在我的应用程序中为每个用户实现家长控制,但我需要一种获取所有用户并将其添加到NSTableView的方法.这些用户应该与登录窗口显示的相同,不包括其他...一个和系统用户.

关于如何做到这一点的任何想法?此外,我希望能够在该表视图上进行选择,当然也可以更改显示的设置.

Dav*_*ong 11

我是这样做的:

#import <CoreServices/CoreServices.h>
#import <Collaboration/Collaboration.h>

CSIdentityAuthorityRef defaultAuthority = CSGetLocalIdentityAuthority();
CSIdentityClass identityClass = kCSIdentityClassUser;

CSIdentityQueryRef query = CSIdentityQueryCreate(NULL, identityClass, defaultAuthority);

CFErrorRef error = NULL;
CSIdentityQueryExecute(query, 0, &error);

CFArrayRef results = CSIdentityQueryCopyResults(query);

int numResults = CFArrayGetCount(results);

NSMutableArray * users = [NSMutableArray array];
for (int i = 0; i < numResults; ++i) {
    CSIdentityRef identity = (CSIdentityRef)CFArrayGetValueAtIndex(results, i);

    CBIdentity * identityObject = [CBIdentity identityWithCSIdentity:identity];
    [users addObject:identityObject];
}

CFRelease(results);
CFRelease(query);

//users contains a list of known Aqua-style users.
Run Code Online (Sandbox Code Playgroud)

这些CBIdentity对象比CSIdentityRef对象使用起来更方便,但它们确实需要导入Collaboration框架.