c - 所有用户和组的列表

我正在尝试获取 Mac OS X 10.5+ 上的所有用户和所有组的列表。我该怎么做?

例如,我机器上所有用户的列表应该返回: _amavisd, _appowner, _appserver, _ard, _atsserver, _calendar, _carddav, _clamav, _coreaudiod, _cvmsroot, _cvs, _cyrus, _devdocs, _dovecot, _eppc, _installer, _jabber, _lda, _locationd, _lp, _mailman, _mcxalr, _mdnsresponder, _mysql, _pcastagent, _pcastserver, _postfix, _qtss, _sandbox, _screensaver, _securityagent, _serialnumberd, _softwareupdate, _spotlight, _sshd, _svn, _teamsserver, _timezone, _tokend, _trustevaluationagent, _unknown, _update_sharing, _usbmuxd, _uucp, _windowserver, _www, _xgridagent, _xgridcontroller, daemon, dave, nobody, root (那是手工精心编译的)。

如何以编程方式获取该列表(以及所有组的相应列表)?我对替代(非基于 c 的)解决方案持开放态度,例如 Applescript、命令行等。


很久以后更新

TALlama's answer提示我调查 Open Directory 的 API,我发现可以通过编程轻松获取此列表:

#import <OpenDirectory/OpenDirectory.h>
ODSession *s = [ODSession defaultSession];
ODNode *root = [ODNode nodeWithSession:s name:@"/Local/Default" error:nil];
ODQuery *q = [ODQuery queryWithNode:root forRecordTypes:kODRecordTypeUsers attribute:nil matchType:0 queryValues:nil returnAttributes:nil maximumResults:0 error:nil];

NSArray *results = [q resultsAllowingPartial:NO error:nil];
for (ODRecord *r in results) {
    NSLog(@"%@", [r recordName]);
}

这将记录系统上每个用户的用户名。代入kODRecordTypeGroups将为您提供所有组的列表。

-[ODQuery resultsAllowingPartial:error:]方法是一个阻塞调用,所以你要么想在后台线程上执行这段代码,要么使用<ODQueryDelegate>汇总结果。

最佳答案

您想要的工具几乎肯定是 dscl。已经指出了最短的方法:

$ dscl . list /users
$ dscl . list /groups

如果您想输出每个用户的信息,请使用 readall:

$ dscl . readall /users
$ dscl . readall /groups

如果您需要以编程方式解析所述信息,请使用 -plist 让您的生活更轻松:

$ dscl -plist . readall /users
$ dscl -plist . readall /groups

https://stackoverflow.com/questions/1303561/

相关文章:

iphone - iPhone 上 SQLite 的最佳 Cocoa/Objective-C 包装器

ios - AFNetworking 和后台传输

objective-c - performSelectorOnMainThread : and di

objective-c - Swift:需要类前缀?

objective-c - 如何在 Swift 中实现这个多行字符串字面量宏?

objective-c - Cocoa 的依赖注入(inject)框架?

objective-c - 主队列上的 dispatch_sync 与 dispatch_async

ios - 在 iOS 9 中, native Facebook 应用无法通过 Facebook 登

ios - Core Text在iOS中计算字母框架

ios - 深入了解保留周期