Swa*_*nil 3 macos cocoa objective-c
有没有办法通过目标C获取当前登录的用户类型(root,admin或normal)?
我知道NSFullUserName()哪个提供用户名,但是如何检索用户类型?
谢谢.
Jos*_*ith 11
您可以使用检索用户组getpwnam或getpwuid再使用getgrgid从GID获得组名称.
这些是标准库中的C函数.
- 编辑:这是一个简短的,编码不好的C例子---
这里是一个小例子,就在它应该建立使用使(如果您将文件命名为终端的MAC OS 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1806 次 |
| 最近记录: |