web-dev-qa-db-ja.com

OS X GUIで現在ログインしているユーザーを確認するにはどうすればよいですか?

特定のユーザー、具体的にはユーザーsingがグラフィカルユーザーインターフェイスにログインしているかどうかを確認する。

これはコマンドラインから可能ですか?

11
gak

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;
}
19
Chris Johnsen

コマンドラインから、whousersが機能するはずです。

7
John T