Как получить все windows учетных записей пользователей, связанных с ПК - PullRequest
0 голосов
/ 24 февраля 2020

Моя учетная запись пользователя work-p c связана с доменом активной директории моей работы, но у меня также есть 3 локальные Windows учетные записи пользователей. Я хочу программно получить имена пользователей этих 4 учетных записей. Я пытался использовать WMI и некоторые команды powershell, но я получаю только 3 локальные учетные записи или ВСЕ учетные записи домена (я и все мои коллеги). Я вижу, что мне нужно, если go для учетных записей пользователей в панели управления. Есть ли способ, которым я могу зарегистрировать учетную запись домена, относящуюся только к определенной машине.

В основном я хочу все это:

1 Ответ

0 голосов
/ 25 февраля 2020

Этот список профилей хранится в реестре по адресу:

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 учетные записи.

...