Sto cercando di ottenere un elenco di tutti gli gli utenti e tutti i gruppi su Mac OS X 10.5 e versioni successive. Come posso fare questo?Elenco di tutti gli utenti e gruppi
Ad esempio, l'elenco di tutti gli utenti sulla mia macchina deve restituire: _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
(che è stato accuratamente compilato manualmente).
Come posso ottenere quella lista (e l'elenco corrispondente di tutti i gruppi) di programmazione? Sono aperto a soluzioni alternative (non c based), come Applescript, a riga di comando, ecc
aggiornamento molto tempo dopo
TALlama's answer mi ha spinto a indagare l'API per aprire la directory e ho scoperto che questa lista può essere facilmente acquisita a livello di codice:
#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]);
}
che registrerà i nomi utente di tutti gli utenti del sistema. Sostituendo in kODRecordTypeGroups
otterrai l'elenco di tutti i gruppi.
Il metodo -[ODQuery resultsAllowingPartial:error:]
è un blocco chiamata, in modo che ci sia desidera eseguire questo codice su un thread in background, o utilizza un <ODQueryDelegate>
per aggregare i risultati.
Purtroppo, il fatto che sei stato in grado di fare manualmente quella lista esaustiva suggerisce che hai già un modo per automatizzarlo. Presumi presumibilmente un elenco di nomi di directory o qualcosa del genere? Grande domanda da pormi però. Google ha risposto alla domanda in circa 15 secondi. – TheJacobTaylor
L'ho preso da un altro programma. –
Chiarimento: l'altro programma aveva la lista in un pulsante popup, e l'ho copiato. Voglio un popup popup simile. =) Per quanto riguarda google, ho passato un po 'di tempo a cercare varianti su "mac get list di tutti gli utenti" e non ho trovato nulla di rilevante. –