2009-07-29 31 views
1

Mac OSXでシステムサービスとして動作するソフトウェアを作成していて、「アクティブな」ユーザーを取得する方法が見つからないようです。OSX - ログインしたユーザーのユーザーIDをシステムサービスから取得する

ログインしているユーザーのリストを繰り返し処理するためのAPIがあり、どちらがマシンコンソールを持っているかを知ることができるようですが、これらのAPIに関するドキュメントは見つかりません。

/devを見ると、現在ログインしているユーザーが/dev/consoleデバイスを所有しているようですが、これを確認するためのドキュメントが見つかりませんでした。

アイデア?

答えて

2

Appleのの回答礼儀Technical Q&A

  • #include <SystemConfiguration/SystemConfiguration.h> 
    /* .... */ 
    CFStringRef result = SCDynamicStoreCopyConsoleUser(NULL, NULL, NULL); 
    /* .... */ 
    

ORあなたがする必要があり、そこからログインしているすべてのアカウントのリストを取得するのutmpx APIを使用SystemConfiguration.frameworkを要求必要な情報を得ることができます...

1

getuidgetgidを使用すると、ユーザーのユーザーIDとグループIDを取得できます。 getloginまたはを使用すると、現在のユーザー名の文字列表現を取得できます。 getpwuidで追加のユーザー情報を取得できます。

「man」はあなたの友人です。ご不明な点がある場合は、UNIX Manual Pagesにご相談ください。

+0

申し訳ありませんが、私はあなたが求めていたことを完全に理解していませんでした。一度に複数のユーザーがログインする可能性が常にあるため、「アクティブな」ユーザーを取得することはできません。特定のユーザーに対して何かをしたい場合は、ユーザーごとの起動エージェントを作成することができます。 –

+2

Macを一度に物理的に使用できるのは1人だけです。ファストユーザスイッチングは、複数の人が所与の時間に端末を制御することを可能にしない。 SSHではなく、コンソールにアクセスできますが、GUIにアクセスすることはできません。 getuidなどは、実行中のプロセス(例:root)の現在のユーザーを返します。 getloginは同じ動作をしているようです。 – harningt

関連する問題