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?


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;
}

Siehe manpage getlogin.
Itachi

stat -f '% u% Su' / dev / console funktioniert einwandfrei. Vielen Dank
Akshat

7

Über die Kommandozeile whound userssollte funktionieren.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.