有什么方法可以通过 Objective-C 获取当前登录的用户类型(root、admin 或 normal)?
我知道 NSFullUserName()
提供用户名,但如何检索用户类型?
谢谢。
最佳答案
您可以使用 getpwnam
或 getpwuid
检索用户组,然后使用 getgrgid
从 gid 中获取组名。
这些是标准库中的 C 函数。
-- 编辑:这是一个简短的、编码不佳的 C 示例 ---
这是一个小例子,在终端的 mac os 上它应该使用 make 构建(如果你命名文件 getpwnam_example.c
你可以做 $ make getpwnam_example
在与 c 文件相同的目录)。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <strings.h>
#include <pwd.h>
#include <grp.h>
int main(int argc, char **argv) {
uid_t current_user_id = getuid();
printf("My Current UID is %d\n", current_user_id);
struct passwd *pwentry = getpwuid(current_user_id);
printf("My Current Name is %s\n", pwentry->pw_gecos);
printf("My Current Group ID is %d\n", pwentry->pw_gid);
struct group *grentry = getgrgid(getgid());
printf("My Current Group Name is %s\n", grentry->gr_name);
printf("Am I an admin? ");
struct group *admin_group = getgrnam("admin");
while(*admin_group->gr_mem != NULL) {
if (strcmp(pwentry->pw_name, *admin_group->gr_mem) == 0) {
printf("yes!\n");
}
admin_group->gr_mem++;
}
return 0;
}
关于objective-c - Objective C 和 OS 用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6614901/