uidと名前の配列を取得するにはどうすればよいですか?
0から99999まで繰り返して、を実行できgetpwnam()
ます。ただし、ほとんどのマシンのアカウントは5つ未満であるため、最適ではありません。どのフレームワークがこれに関与しているのかわからないため、何を検索すればよいかわかりません。
アカウントをトラバースできるより最適なソリューションはありますか?
編集:投稿した直後にgetpwent()
、アカウントをトラバースするために発見しました。
setpwent();
struct passwd *pw;
while ((pw = getpwent())) printf("%d\n", pw->pw_uid);
endpwent();
ただし、それはアカウントがシステム環境設定アカウントであるかどうかを示すものではありません。
それでも、システム環境設定のアカウントを取得するにはどうすればよいでしょうか。
編集:私はこれに相当するコマンドライン、コマンドを見つけましたdscl
。
prompt> dscl . -list /Users UniqueID
_mysql 74
_postfix 27
_spotlight 89
_sshd 75
_windowserver 88
_www 70
daemon 1
johndoe 501
nobody -2
root 0