2010-05-22 13 views

risposta

31

C'è funzione NSUserName()

+8

A volte fanno troppo facile e poi ti senti sciocco. – TechZen

+1

Penso che tutti dovrebbero dare a David un punto per una risposta così completa e ovviamente ben studiata. – bbum

+1

E non dimenticare [** 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(), che restituisce il passwd 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) 

// simile altre informazioni

+0

Qual è il punto se ci sono funzioni di livello superiore nei framework - che sono garantite per darti la risposta corretta, a livello di OS X e non qualche risposta potenzialmente casuale al sistema UNIX sottostante. .?! – Jay

+0

Intendo solo che esiste un metodo per il linguaggio di livello inferiore, quindi se qualcuno non vuole usare la funzione obiettivo c allora può farlo. Sì, entrambi sono uguali ed entrambi garantiscono il risultato corretto. –

+1

@Jay Quando getpwuid() restituisce la spazzatura? Chiama semplicemente OpenDirectory. – David

0

È possibile utilizzare NSUserName(). Ciò restituirà il nome dell'utente attualmente connesso.

NSString *userName = NSUserName(); 
Problemi correlati