Ich versuche, eine Liste von alle Benutzer und alle Gruppen auf Mac OS X 10.5 + zu erhalten. Wie kann ich das machen?Liste aller Benutzer und Gruppen
Zum Beispiel sollte die Liste aller Benutzer auf meinem Computer zurückgeben: _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
(das wurde mühsam manuell kompiliert).
Wie kann ich diese Liste (und die entsprechende Liste aller Gruppen) programmatisch erhalten? Ich bin offen für alternative (nicht-c basiert) Lösungen, wie Applescript, Kommandozeilen usw.
-Update eine lange Zeit später
TALlama's answer mich aufgefordert, die API zu untersuchen Open Directory und ich fand, dass diese Liste leicht programmatisch erworben werden:
#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]);
}
, dass die Benutzernamen der einzelnen Benutzer auf dem System anmelden. Durch das Ersetzen in kODRecordTypeGroups
erhalten Sie die Liste aller Gruppen.
Die -[ODQuery resultsAllowingPartial:error:]
Methode ist ein Anrufblockierung, so würden Sie entweder diesen Code auf einem Hintergrund-Thread ausgeführt werden soll, oder eine <ODQueryDelegate>
verwenden, um die Ergebnisse zu aggregieren.
Leider konnte die Tatsache, dass Sie diese erschöpfende Liste manuell erstellen konnten, darauf hindeuten, dass Sie bereits eine Möglichkeit hatten, sie zu automatisieren. Sie lesen vermutlich eine Liste von Verzeichnisnamen oder etwas? Eine gute Frage, die man stellen sollte. Google hat die Antwort in ungefähr 15 Sekunden angezeigt. – TheJacobTaylor
Ich habe es von einem anderen Programm. –
Klarstellung: das andere Programm hatte die Liste in einer Popup-Taste, und ich habe es kopiert. Ich möchte eine ähnliche Popup-Schaltfläche. =) Wie bei Google habe ich eine Weile nach Variationen auf "Mac Get Liste aller Benutzer" gesucht und konnte nichts relevantes finden. –