【问题标题】: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 只是为了排除SYSTEMLOCAL SERVICENETWORK SERVICE 帐户。

【讨论】:

    最近更新 更多