小编Fre*_*ick的帖子

如何获取XP,Vist和7中的所有用户帐户名,32位或64位以及任何操作系统语言

我有一个C#winform应用程序,它将安装在Windows 7,Vista和XP机器上,32或64位,操作系统有英语,德语和西班牙语(以及将来的其他语言).

我需要在本地计算机上获取所有管理员和用户帐户名称的列表.我只需要一个帐户名列表,仅此而已.

问题是我的代码仅适用于英语操作系统.

有没有办法在本地机器上获取用户名,无论操作系统的语言如何,无论是XP,Vista还是7,无论是32位还是64位?

我读了一篇关于使用SID来获取本地管理员名称的帖子,以防它被重命名.使用SID可以帮助解决我的问题吗?

以下是我的代码.在德语OS计算机上,代码在"DirectoryEntry admGroup = localMachine.Children.Find("administrators","group");"行上失败.它最有可能失败,因为在德国操作系统中,"管理员","组"这两个词可能拼写不同.对于西班牙语OS来说也是如此.

我的32位操作系统代码:

DirectoryEntry localMachine = new DirectoryEntry(
    "WinNT://" + Environment.MachineName);

DirectoryEntry admGroup = localMachine.Children.
    Find("administrators", "group");
object adminmembers = admGroup.Invoke("members", null);

DirectoryEntry userGroup = localMachine.Children.Find("users", "group");
object usermembers = userGroup.Invoke("members", null);

//Retrieve each user name.
foreach (object groupMember in (IEnumerable)adminmembers)
{
    DirectoryEntry member = new DirectoryEntry(groupMember);
    if (!(member.Name == "admin" || member.Name == "Domain Admins"))
    {
          drow = dtWindowsUser.NewRow();
          drow["WindowsUser"] = member.Name;

          //Add row to datatable
          dtWindowsUser.Rows.Add(drow);
    }
}
foreach (object …
Run Code Online (Sandbox Code Playgroud)

.net c# winforms

7
推荐指数
1
解决办法
5102
查看次数

标签 统计

.net ×1

c# ×1

winforms ×1