代替テキスト http://www.freeimagehosting.net/uploads/b350914deb.png
ユーザーとローカルサービスとネットワークサービスのリストを取得したい
代替テキスト http://www.freeimagehosting.net/uploads/b350914deb.png
ユーザーとローカルサービスとネットワークサービスのリストを取得したい
WMIにはWin32_UserAccount
クラスがありますが、それを列挙すると、と同じリストがNetEnumUsers
生成され、「ローカルサービス」や「ネットワークサービス」などの組み込みのセキュリティプリンシパルではなく、(多かれ少なかれ)「通常の」アカウントのみが生成されます。
NetLocalGroupEnum
とを使用してすべてを取得NetLocalGroupGetMembers
できますが、WMI経由ではなく(少なくともAFAIK)、Win32APIを直接操作できるものから取得する必要があります。それでも役立つ場合は、グループとメンバーを一覧表示するサンプルコードを次に示します。
#define UNICODE
#include <windows.h>
#include <lmaccess.h>
#include <lmapibuf.h>
#include <iostream>
int main() {
LOCALGROUP_INFO_0 *l_info;
DWORD read;
DWORD total;
NetLocalGroupEnum(NULL,
0,
(unsigned char **)&l_info,
MAX_PREFERRED_LENGTH,
&read,
&total,
NULL);
std::wcout << L"Local Groups\n";
for (int i=0; i<read; i++) {
std::wcout << l_info[i].lgrpi0_name << std::endl;
LOCALGROUP_MEMBERS_INFO_1 *members;
DWORD entries, total_entries;
NetLocalGroupGetMembers(NULL,
l_info[i].lgrpi0_name,
1,
reinterpret_cast<BYTE **>(&members),
MAX_PREFERRED_LENGTH,
&entries,
&total_entries,
NULL);
for (int mem_num = 0; mem_num<entries; mem_num++)
std::wcout << L"\t" << members[mem_num].lgrmi1_name << L"\n";
NetApiBufferFree(members);
}
NetApiBufferFree(l_info);
GROUP_INFO_0 *g_info;
NetGroupEnum(NULL,
0,
(unsigned char **)&g_info,
MAX_PREFERRED_LENGTH,
&read,
&total,
NULL);
std::wcout << L"\nGlobal Groups\n";
for (i=0; i<read; i++)
std::wcout << g_info[i].grpi0_name << std::endl;
NetApiBufferFree(g_info);
return 0;
}
これは WSH 経由で実行できます。以下は JavaScript の例です: http://www.winscripter.com/WSH/ADSI/56.aspx
C# のサンプル: http://www.geekzone.co.nz/chakkaradeep/3938
win32 リストのユーザー アカウントを検索して、BING に関するいくつかの回答を見つけました
最後に Microsoft からのサンプル: http://gallery.technet.microsoft.com/ScriptCenter/en-us/827623f5-eb55-4035-8f57-25c4afb444cd