Como você pode descobrir o usuário atualmente logado no OS X GUI?

10

Tentando descobrir se um usuário em particular está logado na máquina, especificamente o usuário usando a interface gráfica do usuário.

Isso é possível via linha de comando?

    
por Gerald Kaszuba 26.08.2010 / 04:44

2 respostas

18

GUI:

  • Abra o painel de preferências Contas em Preferências do sistema . A conta de usuário pré-selecionada será a conta de usuário ativa.
  • Se a troca rápida de usuário estiver ativa, o menu extra (o menu à direita da barra de menus) pode ser configurado para mostrar o nome do usuário ativo.

Linha de comando:

  • Verifique o proprietário de /dev/console

    stat -f '%u %Su' /dev/console
    
  • Escreva um programa que use a API oficial ( SCDynamicStoreCopyConsoleUser ; veja abaixo)

Em um programa C:

O código C em Technical Q & A QA1133: Determinando o status de login do usuário do console mostra como determinar qual usuário possui a sessão da GUI ativa.

Por exemplo:

/* 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;
}
    
por 26.08.2010 / 07:39
7

Por meio da linha de comando, who e users devem funcionar.

    
por 26.08.2010 / 04:51