我试图检索所有曾经登录过电脑的用户并将它们填充到组合框中,但搜索后,我没有找到任何好的答案。
我本来打算看看:
DirectoryInfo(Environment.GetEnvironmentVariable("USERPROFILE")).Parent.GetDirectories();
Run Code Online (Sandbox Code Playgroud)
但我觉得这样太不靠谱了。
接下来我打算查看注册表,但读完后,如果用户帐户名发生更改,该列表将不会更新。我知道机器上必须有所有用户配置文件的记录,因为我使用了 Microsoft systernals 工具来管理它们。但我只是不知道如何用 C# 以编程方式完成它。
好吧,我想通了,实际上是使用 WMI,这是我的代码。
using System.Security.Principal;
using System.Management;
private void GetLocalUserAccounts()
{
SelectQuery query = new SelectQuery("Win32_UserProfile");
ManagementObjectsSearcher searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject sid in searcher.Get())
{
MessageBox.Show(new SecurityIdentifier(sid["SID"].ToString()).Translate(typeof(NTAccount)).ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
这也会返回系统帐户 IE:NT_Authority NT_System,但这些帐户可以轻松过滤。感谢您的所有帮助。