システム関数を使用して、Windows と Linux のアカウント数を取得したいと考えています。どこを見たらいいのかわからない。私を正しい方向に向けてください。
4 に答える
Linuxシステムの場合、ファイルの行数を数えることができます/etc/passwd
。このファイルには、システムへの各ユーザーのエントリが含まれています。
Linuxでテキストファイルの行数を数えるには、このwc
コマンドを使用できます。
とにかく、Cプログラムでこの情報が必要な場合は、別のアプローチを取ることをお勧めします。
を使用してテキストファイルを開き、行がなくなるまでfopen()
を使用して各行を読み取ることができます。そうすることで、ユーザー数を取得できます。fgets()
fgets()
system()
関数はプログラムを実行します。必要なことを実行するコマンド ラインがわかっている場合は、 を使用system()
してそのコマンド ラインを実行できます。
どのコマンド ライン プログラムが Windows のアカウント数を表示するのかわかりません。ホームディレクトリの数を調べることで、概算を得ることができます。Windows ではホーム ディレクトリは に\Users
あり、Linux ではホーム ディレクトリは `/home' にあります。
関数はプログラムのsystem()
出力をキャプチャしません。次に、プログラムの出力をファイルにリダイレクトするコマンド ラインを実行してから、このファイルを開いて出力を解析する必要があります。
Python のような言語を使用すると、この問題を簡単に解決できるでしょう。Python プログラムは非常に移植性が高く、システム用のラッパーがいくつかあります。
幸運を。
Linuxではわかりませんが、Windowsでは:
NetUserEnum()またはNetQueryDisplayInformation()と、もちろんここのレジストリから:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
PS:system(const char *command)
関数呼び出しはcommand
、コマンド ウィンドウ/ターミナルで実行されます。
Google を使用して、次の情報を見つけました。
Windows: http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/8c72b948-d32c-4785-930e-0d6fdf032ecc
Linux: http://www.linuxforums.org/forum/miscellaneous/29508-list-all-user-accounts-system.html
(検索文字列: "win32 get user account information"、"linux get user account information")
Linux のページにはコマンド ラインが用意されているので、それを呼び出しに入れることができますsystem()
。ただし、Windows ではsystem()
を使用せず、Win32 API を使用します。