Làm thế nào bạn có thể tìm ra người dùng hiện đang đăng nhập trong GUI OS X?


11

Cố gắng tìm hiểu xem một người dùng cụ thể đã đăng nhập vào máy, cụ thể là người dùng sử dụng giao diện người dùng đồ họa.

Điều này có thể thông qua dòng lệnh?


1
Chờ GUI và dòng lệnh? Cả hai? Hay chỉ là dòng lệnh? Tôi bối rối.
Vervious

@ Nano8Blazex, làm cho câu hỏi rõ ràng hơn cho bạn.
gak

: D thật tuyệt!
Vervious

Câu trả lời:


19

GUI:

  • Mở ngăn tùy chọn Tài khoản trong Tùy chọn hệ thống . Tài khoản người dùng được chọn trước sẽ là tài khoản người dùng hoạt động.
  • Nếu chuyển đổi người dùng nhanh được kích hoạt thêm menu của nó (menu ở bên phải của thanh menu) có thể được cấu hình để hiển thị tên của người dùng đang hoạt động.

Dòng lệnh:

  • Kiểm tra chủ sở hữu của /dev/console

    stat -f '%u %Su' /dev/console
    
  • Viết chương trình sử dụng API chính thức ( SCD ẩnStoreCopyConsoleUser ; xem bên dưới)

Trong một chương trình C:

Mã C trong Hỏi đáp kỹ thuật QA1133: Xác định trạng thái đăng nhập của người dùng bảng điều khiển cho biết cách xác định người dùng nào sở hữu phiên GUI đang hoạt động.

Ví dụ:

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

Xem trang web getlogin.
Itachi

stat -f '% u% Su' / dev / console hoạt động hoàn hảo. Cảm ơn bạn
Akshat

7

Thông qua dòng lệnh, whousersnên làm việc.


Ah, whovà tìm "console". Cảm ơn.
gak

1
@Gerald: Sử dụng wholà không chính xác trên hệ thống 10.4 của tôi khi sử dụng chuyển đổi người dùng nhanh (hệ thống Tôi đang sử dụng ngay bây giờ cho thấy người dùng khác trên “bàn giao” cho dù phiên GUI của tôi là một trong những hoạt động). Có lẽ nó đáng tin cậy hơn trong các phiên bản mới hơn.
Chris Johnsen

@JohnT: nếu bạn có 2 người dùng đăng nhập (chuyển đổi người dùng), lệnh who sẽ liệt kê cả hai người dùng được liên kết với 'console'. Điều này không hoạt động chính xác.
Akshat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.