我正在开发一个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();
}
所以使用这种方法,我得到帐户的名称,但没有获得“本地系统帐户”,如何获得此帐户名称?
答案 0 :(得分:1)
你是对的,你需要做一些小事,才能收到帐号。您可以通过SID查找。实际上,对于LocalSystem(S-1-5-18),SID始终相同。
要实际转换它,请尝试以下方法:
string localSysAccountName = new SecurityIdentifier("S-1-5-18")
.Translate(typeof(NTAccount)).ToString();
如果效果不佳,请查看LookupAccountSid。