2010-05-22 8 views

Antwort

31

Es gibt NSUserName()

+8

Manchmal machen sie fast zu einfach und dann fühlen Sie sich albern. – TechZen

+1

Ich denke, jeder sollte David einen Punkt für solch eine gründliche und offensichtlich gut recherchierte Antwort geben. – bbum

+1

Und vergiss nicht [** 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 Funktion: getpwuid(), die die Struktur passwd zurück:

 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) 

// ähnlich andere Informationen

+0

Was ist der Punkt, wenn es Funktionen auf höherer Ebene in den Frameworks gibt - die Ihnen garantiert die korrekte OS X-Level-Antwort geben und nicht irgendeine potentiell zufällige Müll-Antwort des zugrunde liegenden UNIX-Systems. .?! – Jay

+0

Ich meine nur, dass es eine Methode für die Sprache der unteren Ebene gibt, also wenn jemand nicht objektive c-Funktion verwenden will, dann können sie dafür gehen. Ja, beide sind gleich und beide garantieren das richtige Ergebnis. –

+1

@Jay Wann würde getpwuid() Müll zurückgeben? Es ruft nur OpenDirectory auf. – David

0

Sie können NSUserName() verwenden. Dies gibt den Namen des aktuell angemeldeten Benutzers zurück.

NSString *userName = NSUserName(); 
Verwandte Themen