2010-05-22 21 views

Respuesta

31
+8

A veces lo hacen casi demasiado fácil y luego te sientes tonto. – TechZen

+1

Creo que todos deberían darle un punto a David por una respuesta tan exhaustiva y obviamente bien investigada. – bbum

+1

Y no olvide [** 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 función: getpwuid(), que devuelve la estructura passwd:

 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) 

// de manera similar otra información

+0

¿Cuál es el punto si hay funciones de nivel superior en los marcos, que garantizan la correcta respuesta de nivel OS X y no una respuesta de basura potencialmente aleatoria del sistema UNIX subyacente. .?! – Jay

+0

Solo quiero decir que hay un método para el lenguaje de nivel inferior, por lo que si alguien no quiere usar la función objetivo c, entonces puede hacerlo. Sí, ambos son iguales y ambos garantizan el resultado correcto. –

+1

@Jay ¿Cuándo getpwuid() devolverá la basura? Simplemente llama a OpenDirectory. – David

0

puede utilizar NSUserName(). Esto devolverá el nombre del usuario registrado actualmente.

NSString *userName = NSUserName(); 
Cuestiones relacionadas