使用C#获取Windows用户

10
如何使用.NET(C#)获取本地计算机所有Windows用户的列表?

你说“特定的机器”,是指本地/实际的机器还是来自网络上的机器? - Bobby
2个回答

11

这篇博客文章(含代码)详细解释了如何实现:

http://csharptuning.blogspot.com/2007/09/how-to-get-list-of-windows-user-in-c.html

作者列出了以下代码(引用自上述网站):

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("users","group");
object members = admGroup.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
    DirectoryEntry member = new DirectoryEntry(groupMember);
    lstUsers.Items.Add(member.Name);
}
你需要在代码的顶部添加using System.DirectoryServices。要更改计算机,你需要将Environment.MachineName更改为想要访问的任何计算机(只要你有权限这样做且防火墙不会阻止你这样做)。我还修改了作者的代码,以查看users组而不是administrators组。

有任何想法它有多可靠吗?即有使用 WMI 的替代方案声称可以无问题地使用,但是其故障率> 0.5%。 - eglasius
根据我的经验,这种方法是可靠的。至于可靠程度,我无法评论。但应该是完全可靠的。 - IAmTimCorey

4

这取决于你真正想要什么... 如果你在使用Windows域(使用Active Directory),那么你可以查询Active Directory如果 Active Directory 用于限制“授权”使用本地计算机的用户。

如果您的要求不是那么严格,那么您可以检查系统UserProfiles中的文件夹,其中每个文件夹除了 Default User 和 All Users 表示已登录到本地计算机的用户配置文件。注意:这可能包括系统和/或服务帐户...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接