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


11

特定のユーザー、特にグラフィカルユーザーインターフェイスを使用しているユーザーがマシンにログインしているかどうかを確認しようとします。

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


1
GUIとコマンドラインを待ちますか?どちらも?または単にコマンドライン?よくわかりません。
過去の2010

@ Nano8Blazexにより、質問がより明確になりました。
GAK

:Dそれは素晴らしいです!
2010

回答:


19

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

マンページgetloginを参照してください。
イタチ

stat -f '%u%Su' / dev / consoleは完全に機能します。ありがとう
Akshat

7

コマンドラインを介して、whoおよびusers動作するはずです。


ああ、who「コンソール」を探してください。ありがとう。
GAK

1
@Gerald:who10.4システムでユーザーの簡易切り替えを使用すると、使用が正確ではありません(現在使用しているシステムでは、GUIセッションがアクティブなユーザーであっても、「コンソール」に別のユーザーが表示されます)。新しいバージョンの方が信頼性が高いかもしれません。
Chris Johnsen、2010

@JohnT:2人のユーザーがログインしている場合(ユーザー切り替え)、whoコマンドは「コンソール」に関連付けられている両方のユーザーをリストします。これは正しく機能しません。
Akshat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.