Как можно узнать, в настоящее время входил в систему пользователь в GUI OS X?

Попытка узнать, зарегистрирован ли конкретный пользователь в машину, конкретно пользователь, использующий графический интерфейс пользователя.

Действительно ли это возможно через командную строку?

11
задан 26.08.2010, 06:10

2 ответа

GUI:

  • Откройте предпочтительную область Учетных записей в Установках системы. Учетная запись перед выбранным пользователем будет учетной записью активного пользователя.
  • Если быстрое переключение между пользователями активно, его дополнительное меню (меню на правой стороне строки меню) может быть настроено для показа имени активного пользователя.

Командная строка:

  • Проверьте владельца /dev/console

    stat -f '%u %Su' /dev/console
    
  • Запишите программу, которая использует официальный API (SCDynamicStoreCopyConsoleUser; посмотрите ниже),

В программе C:

C кодируют в Технических Вопросах и ответах QA1133: Определение пользователя консоли входит в шоу состояния, как определить, какой пользователь владеет активной сессией GUI.

Например:

/* 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;
}
19
ответ дан 07.12.2019, 12:13

Через командную строку, who и users должен работать.

7
ответ дан 07.12.2019, 12:13

Теги

Похожие вопросы