如何获取与PC关联的所有Windows用户帐户

时间:2020-02-24 16:17:18

标签: c# windows active-directory wmi

我的work-pc用户帐户与我的工作的活动目录域相关,但是我也有3个本地Windows用户帐户。我想以编程方式获取这4个帐户的用户名。我尝试使用WMI和一些powershell命令,但是我只能获得3个本地帐户或所有域帐户(我和我的所有同事)。如果转到控制面板中的“用户帐户”,我可以看到所需的内容。有没有一种方法可以让我只对与特定计算机有关的域帐户进行注册。

基本上我想要所有这些:

1 个答案:

答案 0 :(得分: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帐户。

相关问题