【问题标题】:How to get all windows user accounts associated with a PC如何获取与 PC 关联的所有 Windows 用户帐户
【发布时间】:2026-01-18 12:15:02
【问题描述】:
我的 work-pc 用户帐户与我工作的活动目录域相关,但我也有 3 个本地 Windows 用户帐户。我想以编程方式获取这 4 个帐户的用户名。我尝试使用 WMI 和一些 powershell 命令,但我要么只获得 3 个本地帐户,要么获得所有域帐户(我和我所有的同事)。如果转到控制面板中的用户帐户,我可以看到我需要什么。有没有办法我可以只与特定机器相关的域帐户。
基本上我想要所有这些:
【问题讨论】:
标签:
c#
windows
active-directory
wmi
【解决方案1】:
配置文件列表保存在注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
因此您可以从代码中读取该注册表项。这些密钥包含帐户的 SID,然后您可以将其转换为 DOMAIN\username 格式,如下所示:
using (var profileList = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList")) {
foreach (string keyName in profileList.GetSubKeyNames()) {
using (var profile = profileList.OpenSubKey(keyName)) {
if ((int) profile.GetValue("FullProfile", 0) != 1) continue;
var sid = new SecurityIdentifier(keyName);
Console.WriteLine(sid.Translate(typeof(NTAccount)));
}
}
}
检查FullProfile 值是否为1 只是为了排除SYSTEM、LOCAL SERVICE 和NETWORK SERVICE 帐户。