系统偏好设置的uid /名称列表>帐号

时间:2010-06-06 04:19:09

标签: cocoa macos getpwnam getpwuid dscl

如何获取带有uid和名称的数组?

我可以从0到99999迭代并执行getpwnam()。 但是大多数机器的帐户少于5个,因此它不是最佳的。我不知道什么框架对此负责,因此我不知道要搜索什么。

是否有更优化的解决方案可以遍历帐户?

编辑:发布后我发现getpwent()用于遍历帐户。

setpwent();
struct passwd *pw;
while ((pw = getpwent())) printf("%d\n", pw->pw_uid);
endpwent();

但是,这并不表示帐户是否为系统偏好设置帐户。

那么如何才能获得系统偏好设置帐户?


编辑:我发现命令行等同于dscl命令。

prompt> dscl . -list /Users UniqueID
_mysql                  74
_postfix                27
_spotlight              89
_sshd                   75
_windowserver           88
_www                    70
daemon                  1
johndoe                 501
nobody                  -2
root                    0

1 个答案:

答案 0 :(得分:1)

使用getgrnam("staff")获取员工组的组记录。 gr_mem成员虽然未在联机帮助页中详细说明,但似乎是一个由NULL指针终止的用户名数组。

要查找哪些用户是管理员,请对管理员组执行相同的操作。