Wie können Sie den aktuell angemeldeten Benutzer in der OS X-GUI herausfinden?

11

Es wird versucht herauszufinden, ob ein bestimmter Benutzer am Computer angemeldet ist, insbesondere der Benutzer , der die grafische Benutzeroberfläche verwendet.

Ist das über die Kommandozeile möglich?

gak
quelle
1
GUI und Kommandozeile warten? Beide? Oder einfach nur Kommandozeile? Ich bin verwirrt.
Vervious
@ Nano8Blazex, hat die Frage für Sie klarer gemacht.
Gak
: D das ist toll!
Vervious

Antworten:

19

GUI:

  • Öffnen Sie den Einstellungsbereich " Konten" in den Systemeinstellungen . Das vorgewählte Benutzerkonto ist das aktive Benutzerkonto.
  • Wenn die schnelle Benutzerumschaltung aktiv ist, kann das Menü extra (das Menü auf der rechten Seite der Menüleiste) so konfiguriert werden, dass der Name des aktiven Benutzers angezeigt wird.

Befehlszeile:

  • Überprüfen Sie den Besitzer von /dev/console

    stat -f '%u %Su' /dev/console
    
  • Schreiben Sie ein Programm, das die offizielle API verwendet ( SCDynamicStoreCopyConsoleUser ; siehe unten).

In einem C-Programm:

Der C-Code in Technische Fragen und Antworten QA1133: Bestimmen des Anmeldestatus des Konsolenbenutzers zeigt, wie ermittelt wird, welchem ​​Benutzer die aktive GUI-Sitzung gehört.

Zum Beispiel:

/* Adapted from QA1133:
 *    http://developer.apple.com/mac/library/qa/qa2001/qa1133.html
 */
#include <assert.h>
#include <SystemConfiguration/SystemConfiguration.h>

int main(int argc, char **argv) {
    SCDynamicStoreRef store;
    CFStringRef name;
    uid_t uid;
#define BUFLEN 256
    char buf[BUFLEN];
    Boolean ok;

    store = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
    assert(store != NULL);
    name = SCDynamicStoreCopyConsoleUser(store, &uid, NULL);
    CFRelease(store);

    if (name != NULL) {
        ok = CFStringGetCString(name, buf, BUFLEN, kCFStringEncodingUTF8);
        assert(ok == true);
        CFRelease(name);
    } else {
        strcpy(buf, "<none>");
    }

    printf("%d %s\n", uid, buf);

    return 0;
}
Chris Johnsen
quelle
Siehe manpage getlogin.
Itachi
stat -f '% u% Su' / dev / console funktioniert einwandfrei. Vielen Dank
Akshat
7

Über die Kommandozeile whound userssollte funktionieren.

John T.
quelle
Ah, whound suchen Sie nach "Konsole". Vielen Dank.
Gak
1
@Gerald: Die Verwendung whoist auf meinem 10.4-System bei schneller Benutzerumschaltung nicht korrekt (das System, das ich gerade verwende, zeigt einen anderen Benutzer auf der „Konsole“ an, obwohl meine GUI-Sitzung die aktive ist). Vielleicht ist es in neueren Versionen zuverlässiger.
Chris Johnsen
@JohnT: Wenn 2 Benutzer angemeldet sind (Benutzerwechsel), listet der Befehl who beide Benutzer auf, die mit 'console' verknüpft sind. Dies funktioniert nicht richtig.
Akshat