如何在c#中获取包括本地系统帐户在内的所有帐户?

时间:2014-10-03 14:49:33

标签: c# .net

我正在开发一个winforms向导,在这个向导的一个页面中,我需要列出所有帐户,以便用户选择一个。所以我的工作代码是:

  private static IEnumerable<string> GetUsersAccountName()
    {
        var searcher = new ManagementObjectSearcher(new SelectQuery("Win32_UserAccount"));
        var usersAccounts = (from ManagementBaseObject envVar in searcher.Get()
                     select envVar["Name"].ToString());

        return users.ToList();
    }

所以使用这种方法,我得到帐户的名称,但没有获得“本地系统帐户”,如何获得此帐户名称?

1 个答案:

答案 0 :(得分:1)

你是对的,你需要做一些小事,才能收到帐号。您可以通过SID查找。实际上,对于LocalSystem(S-1-5-18),SID始终相同。

要实际转换它,请尝试以下方法:

string localSysAccountName = new SecurityIdentifier("S-1-5-18")
                     .Translate(typeof(NTAccount)).ToString();

如果效果不佳,请查看LookupAccountSid