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

本文关键字:所有帐户 系统 包括本 获取 | 更新日期: 2023-09-27 18:25:31

我正在开发一个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();
    }

所以用这个方法我得到了帐户的名称,但没有得到"本地系统帐户",如何也得到这个帐户名称?

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

你是对的,为了接收帐户名称,你需要做一些小事情。你可以按SID查找。事实上,对于LocalSystem(S-1-5-18),SID总是相同的。

要真正转换它,请尝试以下操作:

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

如果这似乎不起作用,请查看LookupAccountSid。