2014-10-03 53 views
-1

我开发了一个winforms向导,并且在这个向导的一个页面中,我需要列出所有帐户以使用户选择一个。所以我的工作代码为:如何获取包括本地系统帐户在C#中的所有帐户?

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(); 
    } 
用这种方法我得到账户名称

左右,但没有获得“本地系统帐户”,如何让这个帐户名称呢?

+0

LocalSystem不是该机制的一部分;它被安全系统忽略。如果你真的需要它,只需手动添加它 – 2014-10-03 15:04:54

+0

http://stackoverflow.com/questions/1240373/how-do-i-get-the-current-username-in-net-using-c 这是你是什么寻找 ? – Astro 2014-10-03 15:35:59

回答

1

你是对的,有一些你需要做的事情,以获得帐户名称。你可以通过SID查找。实际上,本地系统的SID始终相同(S-1-5-18)。

要真正将其转换,试试这个:

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

在这种似乎不正常工作的情况下,看看LookupAccountSid

相关问题