2010-05-22 5 views

ответ

31

Там в NSUserName()

+8

Иногда они делают почти слишком легко, а затем вы чувствуете себя глупо. – TechZen

+1

Я думаю, что каждый должен дать Дэвиду точку для такого тщательного и явно хорошо исследованного ответа. – bbum

+1

И не забывайте [** NSFullUserName() **] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#// apple_ref/c/func/NSFullUserName) :-) – Jay

5

C Функция: getpwuid(), который возвращает STRUCT ПАРОЛЬ:

 struct passwd { 
      char *pw_name;  /* username */ 
      char *pw_passwd;  /* user password */ 
      uid_t pw_uid;  /* user ID */ 
      gid_t pw_gid;  /* group ID */ 
      char *pw_gecos;  /* user information */ 
      char *pw_dir;  /* home directory */ 
      char *pw_shell;  /* shell program */ 
     }; 

-------------------- --Code ----------------

#include <pwd.h> 
register uid_t uid; 
struct passwd *uid_pw; 
uid = geteuid(); 
uid_pw = getpwuid (uid); 
strcpy(uname,uid_pw->pw_name) 

// аналогично другая информация

+0

Какой смысл, если в инфраструктурах есть функции более высокого уровня, которые гарантированно дадут вам правильный ответ на уровне OS X, а не какой-нибудь потенциально случайный мусорный ответ базовой системы UNIX. .?! – Jay

+0

Я просто имею в виду, что существует метод для языка более низкого уровня, поэтому, если кто-то не хочет использовать объективную функцию c, тогда они могут пойти на это. Да, оба одинаковы, и оба гарантируют правильный результат. –

+1

@Jay Когда будет getpwuid() вернуть мусор? Он просто вызывает OpenDirectory. – David

0

Вы можете использовать NSUserName(). Это вернет имя текущего зарегистрированного пользователя.

NSString *userName = NSUserName(); 
Смежные вопросы