OS X GUI에서 현재 로그인 한 사용자를 어떻게 찾을 수 있습니까? 인터페이스를 사용 하는 사용자가 컴퓨터에 로그인했는지

특정 사용자, 특히 그래픽 사용자 인터페이스를 사용 하는 사용자가 컴퓨터에 로그인했는지 확인하려고합니다 .

커맨드 라인을 통해 가능합니까?



답변

GUI :

  • 시스템 환경 설정 에서 계정 환경 설정 패널을여십시오 . 사전 선택된 사용자 계정이 활성 사용자 계정이됩니다.
  • 빠른 사용자 전환이 활성화 된 경우 추가 메뉴 (메뉴 막대의 오른쪽에있는 메뉴)를 활성화하여 활성 사용자의 이름을 표시 할 수 있습니다.

커맨드 라인 :

  • 의 소유자 확인 /dev/console

    stat -f '%u %Su' /dev/console
    
  • 공식 API를 사용하는 프로그램 작성 ( SCDynamicStoreCopyConsoleUser ; 아래 참조)

C 프로그램에서 :

기술 Q & A QA1133 : 콘솔 사용자 로그인 상태 판별
의 C 코드 는 활성 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;
}

답변

명령 줄을 통해, who그리고 users작동합니다.