查询本地管理员组

时间:2013-01-30 00:16:11

标签: c# .net-2.0 windows-server-2008

所以,我有点被困在这里......

我正在编写一个能够列出MS Windows Server 2008 R2上本地管理员组中所有用户的程序。

这里的问题是我只允许使用.NET 2.0 - 所以我无法使用GroupPrincipal类......这会使这个任务非常简单。

任何指针都会受到欢迎!

干杯!

2 个答案:

答案 0 :(得分:5)

天哪!

不知道我在想什么 - 这很简单!

Masoud Tabatabaei的所有信誉 - 发现以下代码片段: http://csharptuning.blogspot.se/2007/09/how-to-get-list-of-windows-user-in-c.html

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("administrators","group");
object members = admGroup.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
    DirectoryEntry member = new DirectoryEntry(groupMember);
    lstUsers.Items.Add(member.Name);
}

答案 1 :(得分:1)

您尝试过WMI吗?

例如

ManagementObjectSearcher   search = new ManagementObjectSearcher(@"SELECT * FROM Win32_UserAccount where LocalAccount = true");
ManagementObjectCollection userList = search.Get();

foreach (ManagementObject user in userList)
{
    Console.WriteLine("User name: {0}, Full Name: {1}", 
        user["Name"].ToString(), user["FullName"].ToString());
}

将为您提供本地SAM中的用户列表。您可以向查询添加其他属性并优化列表。

不要忘记添加对System.Management.dll的引用