Come si può scoprire l'utente attualmente connesso nella GUI di OS X?


10

Cercando di scoprire se un determinato utente è registrato nella macchina, in particolare l'utente utilizzando l'interfaccia utente grafica.

E 'possibile via linea di comando?


1
Attendere la GUI e la riga di comando? Tutti e due? O solo la linea di comando? Non ho capito bene.
Vervious

@ Nano8Blazex, ha reso la domanda più chiara per te.
Gerald Kaszuba

: D è fantastico!
Vervious

Risposte:


18

GUI:

  • Apri il pannello delle preferenze di Account in Preferenze di Sistema . L'account utente preselezionato sarà l'account utente attivo.
  • Se il cambio utente rapido è attivo, il suo menu extra (il menu sul lato destro della barra dei menu) può essere configurato per mostrare il nome dell'utente attivo.

Riga di comando:

  • Controlla il proprietario di /dev/console

    stat -f '%u %Su' /dev/console
    
  • Scrivi un programma che utilizza l'API ufficiale ( SCDynamicStoreCopyConsoleUser ; vedi sotto)

In un programma C:

Il codice C in Q & amp; QA1133 tecnico: Determinazione dello stato di accesso dell'utente della console mostra come determinare quale utente possiede la sessione della GUI attiva.

Per esempio:

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

Vedi manpage getlogin.
Itachi

7

Tramite la riga di comando, who e users dovrebbe funzionare.


ah, who e cercare "console". Grazie.
Gerald Kaszuba

1
@Gerald: Utilizzo who non è accurato sul mio sistema 10.4 quando si usa la commutazione rapida dell'utente (il sistema che sto usando in questo momento mostra un altro utente su "console" anche se la mia sessione GUI è quella attiva). Forse è più affidabile nelle versioni più recenti.
Chris Johnsen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.