Как по userid узнать пользователя windows

Как определить имя пользователя Windows по его SID и наоборот – получить SID по имени учетной записи

SID (Security IDentifier) – это уникальный идентификатор, который присваивается пользователям, группам, компьютерам или другим объектам безопасности при их создании в Windows или Active Directory. Windows использует SID, а не имя пользователя для контроля доступа к различным ресурсам: сетевым папкам, ключам реестра, объектам файловой системы (NTFS разрешения), принтерам и т.д. В этой статье мы покажем несколько простых способов получить SID пользователя, группы или компьютера, и обратную процедуру – получить объект по известному SID.

Содержание:

  • Что такое SID объекта в Windows?
  • Как получить SID локального пользователя?
  • Узнать SID пользователя или группы в домене Active Directory
  • Получить SID компьютера
  • Как узнать имя пользователя или группы по известному SID?
  • Поиск объектов в Active Directory по SID

Что такое SID объекта в Windows?

Как мы уже сказали, SID (security identifier) позволяет уникально идентифицировать пользовали, группу или компьютер в пределах определенной области (домена или локального компьютера). SID представляет собой строку вида:

S-1-5-21-2927053466-1818515551-28245911311103.
В данном примере:

  • 2927053466-1818515551-2824591131 – это уникальный идентификатор домена, выдавшего SID (у всего объекта в одном домене эта часть будет одинакова)
  • 1103 – относительный идентификатор безопасности объекта (RID). Начинается с 1000 и увеличивается на 1 для каждого нового объекта. Выдается контроллером домена с FSMO ролью RID Master)

SIDы объектов Active Directory хранятся в базе ntds.dit, а SIDы локальных пользователей и групп в локальной базе диспетчера учетных записей Windows (SAM, Security Account Manager в ветке реестра HKEY_LOCAL_MACHINESAMSAM).

В Windows есть так называемые известные идентификаторы безопасности (Well-known SID). Это SID встроенных (BuiltIn) пользователей и групп, которые есть на любых компьютерах Windows. Например:

  • S-1-5-32-544
    – встроенная группу Administrators
  • S-1-5-32-545
    – локальные пользователи
  • S-1-5-32-555
    – группа Remote Desktop Users, которым разрешен вход по RDP
  • S-1-5-domainID-500
    – учетная запись встроенного администратора Windows
  • И т.д.

В Windows можно использовать различные средства для преобразования SID -> Name и Username -> SID: утилиту whoami, wmic, WMI, классы PowerShell или сторонние утилиты.

Как получить SID локального пользователя?

Чтобы получить SID локальной учетной записи, можно воспользоваться утилитой wmic, которая позволяет обратится к пространству имен WMI (Windows Management Instrumentation) компьютера.

wmic useraccount where name='test_user' get sid

Узнать SID пользователя через WMI

Команда может вернуть ошибку, если репозиторий WMI поврежден. Воспользуйтесь этой инструкцией для восстановления WMI репозитория.

Команда вернула SID указанного пользователя —
S-1-5-21-1175651296-1316126944-203051354-1005
.

Чтобы вывести список SID всех локальных пользователей Windows, выполните:

wmic useraccount get name,sid.

Если нужно узнать SID текущего пользователя (под которым выполняется команда), используйте такую команду:

wmic useraccount where name='%username%' get sid

Можно обратится к WMI напрямую из PowerShell:

(Get-CimInstance -Class win32_userAccount -Filter "name='test_user' and domain='$env:computername'").SID

В новых версиях PowerShell Core 7.x вместо команды Get-WmiObject нужно использовать Get-CimInstance.

Но еще проще получить SID локального пользователя с помощью встроенного PowerShell модуля управления локальными пользователями и группами (Microsoft.PowerShell.LocalAccounts).

Get-LocalUser -Name 'test_user' | Select-Object Name, SID

powershell получить sid локалього пользователя в Windows

По аналогии можно получить SID локальной группы:

Get-LocalGroup -Name tstGroup1 | Select-Object Name, SID

Также вы можете использовать.NET классы System.Security.Principal.SecurityIdentifier и System.Security.Principal.NTAccount для получения SID пользователя с помощью PowerShell:

$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

Узнать SID пользователя или группы в домене Active Directory

Вы можете узнать SID своей доменной учетной записи командой:

whoami /user

whoami user getsid

Получить SID пользователя домена Active Directory можно с помощью WMIC. В этом случае в команде нужно указать имя домена:

wmic useraccount where (name='jjsmith' and domain=′corp.winitpro.ru′) get sid

Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell. Получим SID для доменного пользователя jjsmith:

Get-ADUser -Identity 'jjsmith' | select SID

get-aduser select sid

Вы можете получить SID группы AD с помощью командлета Get-ADGroup:

Get-ADGroup -Filter {Name -like "msk-admin*"} | Select SID

Get-ADGroup получить sid доменной группы

Если на вашем компьютере не установлен модуль AD для PowerShell, вы можете получить SID пользователя с помощью классов .Net:

$objUser = New-Object System.Security.Principal.NTAccount("corp.wintpro.ru","jjsmith")

$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

PowerShell - get SID via SecurityIdentifier and NTAccountЭта же команда PowerShell в одну строку:

(new-object security.principal.ntaccount “jjsmith").translate([security.principal.securityidentifier])

Получить SID компьютера

Если компьютер с Windows добавлен в домен Active Directory, у него будет два разных SID. Первый SID – идентификатор локального компьютера (Machine SID), а второе – уникальный идентификатор компьютера в AD.

SID компьютера в домене Active Directory можно получить с помощью команды:

Get-ADComputer srv-rds1 -properties sid|select name,sid

get-adcomputer команда для получения SID компьютера в домене Active Directory

SID локального компьютера (Machine SID) можно получить с помощью бесплатной утилиты PsGetsid (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid): Но ее придется скачивать и устанавливать на каждый компьютер вручную.

.PsGetsid64.exe

Или просто, обрезав последние 4 символа RID и SID любого локального пользователя:

$user=(Get-LocalUser Administrator).sid
$user -replace ".{4}$"

PsGetsid6 вывести machine sid локального компьютера

Важно, чтобы у каждого компьютера в домене был уникальный локальный SID. Если вы клонируете компьютеры или виртуальные машины, или создаете их из одного шаблона, то перед тем как добавить их в домен нужно выполнить команду sysprep. Эта утилита сбрасывает локальный Machine SID. Это избавит вас от частых ошибок “Не удалось восстановить доверительные отношения между рабочей станцией и доменом”.

Как узнать имя пользователя или группы по известному SID?

Чтобы узнать имя учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where sid='S-1-3-12-12452343106-3544442455-30354867-1434' get name

Для поиска имени доменного пользователя по SID используйте командлеты из модуля
RSAT-AD-PowerShell
:

Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Чтобы определить имя группы по известному SID, используйте команду:

Get-ADGroup -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Get-ADGroup найти группу по SID

Также можно узнать получить SID группы и пользователя с помощью встроенных классов PowerShell (без использования дополнительных модулей):

$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-2470456651-3958312488-29145117-23345716")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

Поиск объектов в Active Directory по SID

Если вы не знаете к какому типу объекта AD относится SID и какой точно командлет нужно использовать для его поиска (Get-AdUser, Get-ADComputer или Get-ADGroup), вы можете использовать универсальный метод поиска объектов в Active Directory по SID с помощью командлета Get-ADObject

$sid = ‘S-1-5-21-2470146651-3951111111-2989411117-11119501’
Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass

Get-ADObject поиск объектов в AD по известному SID

В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass=computer).

Операционная система Windows для идентификации использует специальный идентификатор безопасности (Security Identifier, SID), который присваивается каждой учетной записи пользователя (а также компьютера или группы) при ее создании. В отличие от имени каждый SID уникален, что позволяет системе однозначно идентифицировать пользователя. Поэтому операционная система оперирует именно SID-ами и использует их для контроля доступа к различным ресурсам — принтерам, файлам и папкам и т.п.

Примечание. Говоря об уникальности SID, надо сделать одну оговорку. В Windows существуют так называемые встроенные (BuiltIn) учетные записи, такие как Administrator или Guest. SID-ы этих записей одинаковы в каждом экземпляре Windows вне зависимости от версии ОС. Это дает администратору возможность более-менее  централизованно управлять доступом при отсутствии доменной структуры.

SID для локальных учетных записей храниться базе данных диспетчера учетных записей (Security Account Manager, SAM) на локальном компьютере, для доменных — в базе Active Directory. И сегодня речь пойдет о том, как можно узнать SID пользователя по его имени и наоборот, как выяснить имя пользователя по его SID.

Whoami

Когда требуется посмотреть SID текущего пользователя, то проще всего воспользоваться утилитой whoami. Для этого надо открыть консоль cmd и выполнить команду:

whoami /user

узнаем SID пользователя с помощью whoami

WMIC

В том случае, когда необходимо узнать SID произвольного пользователя, можно воспользоваться Windows Management Instrumentation (WMI). Один из инструментов для работы с WMI — утилита WMIC. Так например, узнать SID пользователя Kirill можно такой командой:

wmic useraccount where name=′Kirill′ get sid

А можно и наоборот, выяснить имя пользователя по его SID:

wmic useraccount where sid=′S-1-5-21-4178654016-3479515840-607560339-1000′ get name

узнаем SID локального пользователя с помощью wmic

Дополнительно в WMI-запросе можно указать имя компьютера (для локального) или домена (для доменного пользователя). Например эта команда выведет SID локального администратора:

wmic useraccount where (name=′administrator′ and domain=′%computername%′) get sid

а эта — доменного:

wmic useraccount where (name=′administrator′ and domain=′contoso′) get sid

узнаем SID локального иили доменного администратора с помощью wmic

Для обычного пользователя все также, узнаем SID по имени:

wmic useraccount where (name=′kirill′ and domain=′contoso′) get sid

и имя по SID:

wmic useraccount where (sid=′S-1-5-21-2404695605-4156858507-746700462-1001′ and domain=′contoso′) get name

узнаем SID доменного пользователя с помощью wmic

Примечание. В запросе вместо имени компьютерадомена можно использовать переменные %computername% и %userdomain%.

PowerShell и WMI

PowerShell также позволяет работать с WMI. Для примера обратимся к классу win32_userAccount и выведем SID доменного:

([wmi]″win32_userAccount.Domain=′contoso′, Name=′Kirill′″).sid

и локального пользователя:

([wmi]″win32_userAccount.Domain=′wks1′, Name=′Petya′″).sid

Также вместо имени компьютера  и домена можно указывать переменные окружения $env:computername и $env:userdomain, например:

([wmi]″win32_userAccount.Domain=$env:computername, Name=′Petya′″).sid

узнаем SID пользователя с помощью wmi

Для обратной операции (узнать имя пользователя по SID) нам потребуется использовать свойство SID класса win32_SID. Например:

[wmi]″win32_SID.SID=′S-1-5-21-4178654016-3479515840-607560339-1002′″).AccountName

узнаем имя пользователя по его SID с помощью wmi

Как вариант, для работы с WMI можно использовать командлет Get-WmiObject (или Get-CimInstance). Например так мы узнаем SID пользователя:

(Get-WmiObject -Class win32_userAccount -Filter ″name=′Kirill′ and domain=′Contoso′″).SID

узнаем SID пользователя с помощью Get-WmiObject

а так его имя:

(Get-WmiObject -Class win32_userAccount -Filter ″SID=′S-1-5-21-2404695905-416858507-746700462-1001′″).Name

узнаем имя пользователя по SID с помощью Get-WmiObject

PowerShell и .NET

Также узнать SID пользователя можно с помощью .NET класса System.Security.Principal.NTAccount. Этот класс используется для представления пользователя или группы. Для получения SID локального пользователя надо создать новый объект этого класса и передать ему в виде параметра имя пользователя, а затем с помощью метода Translate перевести объект пользователя в объект класса System.Security.Principal.SecurityIdentifier, который предназначен для представления SID пользователя или группы:

$User = New-Object System.Security.Principal.NTAccount(″Kirill″)
$SID = $User.Translate([System.Security.Principal.SecurityIdentifier])
$SID.Value

Для доменного пользователя процедура идентична, только в виде параметра передаются имя пользователя и имя домена:

$User = New-Object System.Security.Principal.NTAccount(″Contoso″,″Kirill″)
$SID = $User.Translate([System.Security.Principal.SecurityIdentifier])
$SID.Value

узнаем SID пользователя с помощью .Net

Для обратной процедуры получения имени по SID делаем наоборот — сначала создаем объект класса System.Security.Principal.SecurityIdentifier и передаем ему в виде параметра SID пользователя, а затем переводим его в объект класса System.Security.Principal.NTAccount и выводим свойство Value, содержащее имя пользователя:

$SID = New-Object System.Security.Principal.NTAccount(″S-1-5-21-4178654016-3479515840-607560339-1000″)
$User = $SID.Translate([System.Security.Principal.NTAccount])
$User.Value

узнаем имя пользователя по SID с помощью .Net

PsGetSid

Как видите, встроенных средств для выяснения SID в Windows предостаточно, но для полноты картины возьмем еще одно, от стороннего разработчика.

PsGetSid — утилита командной строки от Sysinternals, входящая в состав пакета PsTools. PsGetSid умеет получать SID пользователя по его имени и наоборот, работает как с локальными, так и с доменными аккаунтами. Утилита не требует установки, ее достаточно скопировать на нужный компьютер и запустить.

Для примера запросим SID пользователя по его имени:

psgetsid wks10Kirill

и наоборот, выясним имя по SID:

psgetsid S-1-5-21-438167859-634674341-1098546566-1001

узнаем имя пользователя по SID с помощью psgetsid

Обновлено 10.03.2021

как узнать sid пользователя windows

Добрый день уважаемые читатели, сегодня мы продолжим изучение Active Directory, а точнее его сущностей. Под сущностью понимается некий объект, в нашем случае это учетная запись пользователя, но их список куда больше. Наша сегодняшняя задача изучить как узнать sid пользователя windows в домене.

Что такое Sid windows

Давайте для начала с вами выясним определение SID или Security Identifier > это идентификатор безопасности, который используется в семействе операционных систем Windows для идентификации объекта:

  • Группа безопасности
  • Пользователь
  • Компьютер
  • Организационная единица
  • Принтер

SID во время создания объекта, присваивается ему , в домене Active Directory за это отвечает мастер роль RID. В рамках домена, каждый SID должен быть уникален, в отличии от имени, так как Ивановых Иванов Ивановичей, может быть много, а вот отличаться они будут логином и SID. Для операционной системы Windows, важнее сиды объектов, она же их использует и для контроля прав доступа на различные корпоративные ресурсы:

  • Папки и файлы
  • Принтеры
  • Доступ к внешним ресурсам

Структура SID

Давайте разбираться из каких частей состоит Security IDentifier.

Впереди идет версия сида, далее Генеральная область Authority — это ссылка на систему источник, которая его выпустила. В операционных системах Windows версия  Security IDentifier сейчас одна и равна она 1, Генеральная область Authority имеет значения 1,3,5, для Microsoft Exchange она 9. Далее в сиде следует 1 или более идентификаторов Sub Authority, а за ними идет RID (Relative IDentificator) локальный для данного Sub Authority номер субъекта безопасности.

Структура SID

По мимо этого, в любой ос Windows существуют встроенные или BuiltIn группы и учетные записи, например администратор или гость, в каждой ос виндоус они имеют одинаковые SID значения. Посмотреть вы их можете в оснастке Управление компьютером.

Как узнать sid пользователя windows в домене-2

Сделаны они для того, что если у вас нет Active Directory, то вы могли бы администрировать данные системы с помощью них. Все SID для данных учетных записей находятся в локальной базе данных Windows, под названием Security Account Manager или SAM. Все сиды пользователей домена лежат в базе Active Directory в файле NTDS.dit.

База Security Account Manager

Давайте посмотрим за, что отвечает Security Account Manager:

  • Сопоставление имен с SID и обратно, некий такой DNS для учетных записей
  • Проверяет пароли, авторизовывает (принимает участие в процессе входа пользователей в ОС)
  • Ведет статистику, кто последний входил, количество входов, кто сколько раз ввел не тот пароль, короче аудит
  • Контролирует политика паролей учетных записей, в случае чего может блокировать учетные записи.
  • Ведет учет, кто в какие группы входит
  • Производит защиты самого себя
  • Дает программный интерфейс для управления базой учетных записей

Хранится SAM (Security Account Manager) в реестре Windows. Как открыть реестр windows, я уже описывал не однократно, переходим в ветку.

HKEY_LOCAL_MACHINESAMSAM

Если вы кликните правым кликом и из контекстного меню выберете Разрешения, то обнаружите, что права доступа есть только у системы, а вот у администраторов локальной станции их нет, но при желании можно их получить, это лишний механизм защиты, так как можно вытащить хэши учетных записей и попытаться их взломать.

Как узнать sid пользователя windows в домене-3

SAM это библиотека samsrv.dll, которая работает в Windows в виде процесса lsass.exe, увидеть это можно в диспетчере задач.

Security Account Manager

1 способ узнать sid пользователя, команда WMIC

Для примера я все буду показывать на своей рабочей станции с установленной в ней Windows Server 2012 R2, станция принадлежит домену Active Directory. Первый метод, это использование старого, доброго WMIC инструментария (Windows Management Instrumentation). Все, что вам нужно, это знать имя пользователя, точнее его логин. Чтобы посмотреть список локальных пользователей введите команду

На выходе вы получите список локальных пользователей.

способ узнать sid пользователя, команда WMIC

Чтобы выяснить все логины доменных пользователей вводим команду

Net user «пользователи домена» /domain

Я вам это уже рассказывал в заметке Как узнать имена учетных записей Администраторов домена. На выходе получите, что то такое

Как узнать sid пользователя windows в домене-3

Далее зная логин все просто вводим

wmic useraccount where name=»admdc» get sid

Как видите все работает.

Как узнать sid пользователя windows в домене-4

Можно наоборот по SID узнать логин пользователя, потребуется это в тех случаях, когда например в списках доступа у вас видится сид, и вы хотите узнать кому он принадлежал.

wmic useraccount where sid=»S-1-5-21-2071342971-2054724104-2057240633-1001″ get name

Еще с помощью WMI вы можете реализовать вот, что укажите имя компьютера (для локального) или домена (для доменного пользователя). Ниже пример получения SID локальной рабочей станции

wmic useraccount where (name=»Администратор» and domain=»%computername%») get sid

Для доменной структуры

wmic useraccount where (name=»Администратор» and domain=»aetp») get sid

способ узнать sid пользователя, команда WMIC-2

Получить логин по SID аналогично предыдущей команду.

wmic useraccount where (sid=»S-1-5-21-613421863-3366779934-4260147692-500″ and domain=»aetp») get name

2 способ узнать sid пользователя, команда Whoami

Тоже довольно старенькая команда из cmd.exe. Вводим

Получаем полный сид текущего залогиненного пользователя.

способ узнать sid пользователя, команда Whoami

Если ввести Whoami /logonid, то можно получить logonid, выглядит он вот так S-1-5-5-0-595920

Если ввести ключ /all, то вы увидите, все sid локальных (bultin) групп и пользователей

способ узнать sid пользователя, команда Whoami-2

Так же вы увидите сведения о привилегиях.

способ узнать sid пользователя, команда Whoami-3

На мой взгляд, данный метод, немного проще первого, так как требует ввода меньшего количества ключей.

3 способ узнать sid пользователя, ADUC и ADSIedit

В третьем способе мы воспользуемся средствами графического интерфейса, а точнее самой оснастке Active Directory пользователи и компьютеры. В ней есть встроенный механизм называется редактор атрибутов Active Directory. Открываем вкладку Вид и ставим галку Дополнительные параметры, да забыл отметить нужно быть членом группы Администраторы схемы.

узнать sid пользователя, ADUC и ADSIedit-1

После чего заходим в свойства учетной записи, вкладка Редактор атрибутов и находим там поле objectSid.

узнать sid пользователя, ADUC и ADSIedit-2

Так же SID можно посмотреть и во встроенной оснастке ADSIedit, подключаетесь там к контексту именования имен и заходите в свойства нужной учетной записи.

узнать sid пользователя, ADUC и ADSIedit-4

Да чуть не забыл в Windows Server 2012 R2 есть такое средство как Центр администрирования Active Directory, ищите там нужную учетную запись и в ней находите пункт SID.

узнать sid пользователя, ADUC и ADSIedit-3

4 способ узнать sid пользователя, утилита PsGetSid

Есть такая замечательная утилита от Microsoft од названием PsGetSid.

Скачать PsGetSid можно по ссылке https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx

Когда вы скачаете и разархивируете файл, вы получите папку с большим набором утилит, среди них будет PsGetSid.

узнать sid пользователя, утилита PsGetSid-1

смысл у данной утилиты очень простой, она входит в состав Sysinternals и умеет получать SID пользователя по его имени и наоборот, умеет получать как локальных пользователей, так и доменных.

Вводим команду psgetsid имя компьютералогин учетки

psgetsid adm999admdc

и наоборот, выясним имя по SID:

psgetsid S-1-5-21-613421863-3366779934-4260147692-1312

узнать sid пользователя, утилита PsGetSid-2

5 способ узнать sid пользователя, PowerShell и System.Security.Principal.NTAccount

Пятым методом будет использование в powershell класса System.Security.Principal.NTAccount. Для домена Active Directory.

$objUser = New-Object System.Security.Principal.NTAccount(«домен», «логин учетки»)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell

Для локального пользователя команда будет такой.

$objUser = New-Object System.Security.Principal.NTAccount(«логин»)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell-2Обратная ситуация получаем по SID имя пользователя

$objSID = New-Object System.Security.Principal.SecurityIdentifier («S-1-5-21-613421863-3366779934-4260147692-1312»)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

6 способ узнать sid пользователя, Get-ADUser

Снова воспользуемся командлетами powershell Get-ADUser. вводим команду для получения SID доменного пользователя.

Get-ADUser -Identity ‘логин’ | select SID

получить наоборот логин по sid

Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

узнать sid пользователя, Get-ADUser

Как массово определить SID пользователя

Все описанные выше методы хороши, когда вам нужно найти SID для одного или двух пользователей, а как быть если у вас это пачка логинов. Например мне это нужно было при предоставлении прав. Предположим, что у меня есть текстовый файл со списком логинов, каждый на новой строке. Мне нужно для каждого определить его Security Identifier.

Файл со списком пользователей домена

В этом нам поможет скрипт PowerShell. Откройте ISE.

$users_file = «C:scriptsusers.txt»

foreach ($line in (Get-Content $users_file))
{
$username = ($Line -split «\»)[1]
$user = Get-ADUser $username -Server «DC4.root.pyatilistnik.org»

$Result = [ordered]@{
user = $line
SID = $user.SID
}

New-Object PSObject -Property $Result
}

$Result

На выходе будет удобный список, при желании можно все экспортировать в csv или txt файл.

Как массово определить SID пользователя

На этом у меня все с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

В процессе работы с учётными записями пользователям Windows гораздо удобнее иметь дело с осмысленными именами, компьютеры же, привыкшие «мыслить» на языке цифр вместо имён учётных записей оперируют их SID — уникальными идентификаторами безопасности. В Windows SID могут иметь не только пользователи, свои идентификаторы присваиваются группам, доменам, различным системным объектам и т.д.

При выполнении некоторых трюков и тонких настроек вам может понадобиться этот самый SID. Покопавшись в системном реестре, его можно извлечь оттуда вручную, но есть и более простой способ. Если у вас на компьютере завалялся пакет Sysinternals Suite, можете воспользоваться входящей в его состав утилитой PsGetSid, она то как раз и нужна, чтобы вытаскивать SID из системы. А можно извлечь SID и безо всяких сторонних средств. Для этого в Windows есть командная строка CMD и консоль PowerShell.

Чтобы получить SID текущего пользователя, выполните в запущенной от имени администратора командной строке такую команду:

wmic useraccount where name='%username%' get sid

Этой же командой можно извлечь SID любого локального пользователя, подставив на место переменной %username% его имя.

Получить SID

Аналогичный результат можно получить с помощью консоли PowerShell, только на этот раз придётся выполнить целых три команды, заменив предварительно USERNAME именем реального пользователя. Вот так:

$objUser = New-Object System.Security.Principal.NTAccount("USERNAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Valueимя

PowerShell

Точно также просто можно узнать идентификатор безопасности текущего доменного пользователя. В командной строке он извлекается командой whoami /user

В командной строке

А вот как быть, если вам нужно проделать всё наоборот, то есть по имеющемуся SID узнать имя пользователя? И тут всё очень просто. Для этого в запущенной с повышенными привилегиями командной строке выполняем команду wmic useraccount where sid=’S-XXXXXXXXX’ get name, где S-XXXXXXXXX — известный вам идентификатор.

Загрузка…

Вы наверняка пытались управлять разрешениями определенных файлов, папок или часто просматриваете реестр Windows, то может показаться, что вы видели некоторые строковые значения типа S-1-5-21-281723897-98365329832-7382047462- 600. Эти значения известны как идентификаторы безопасности или SID. Давайте разберем, что такое SID пользователя в Windows 10 и какие способы его узнать. 

Что такое SID пользователя в Windows?

Идентификатор безопасности или SID пользователя в Windows 10 является единственным значащим значением, которое служит для идентификации принципа безопасности или группы безопасности в Windows. Поэтому можно сказать, что SID пользователя в Windows 10 похож на паспорт, который присваивается каждому компьютеру во время установки операционной системы. Кроме того, этот идентификатор может быть полезен во время выполнения определенных команд, связанных с безопасностью нашего компьютера, поэтому давайте разберем, как узнать SID пользователя в Windows 10.

Как узнать SID пользователя в Windows с помощью cmd

Одним из самых быстрых способов узнать идентификатор пользователя SID в Windows 10, — это воспользоваться командной строкой. Откройте командную строку и введите ниже команды, которые соответствуют вашим требованиям. 

channel

  1. Имя SID используемое в настоящее время: введите команду  whoami /user и нажмите Enter.
  2. Имя SID определенного пользователя: введите в командую строку wmic useraccount where name="хомячок" get name,sid. Где «хомячок» — это фактическое имя пользователя.
  3. Все SID пользователей в Windows: введите  wmic useraccount get name,sid.

Узнать SID пользователя windows через CMD

Узнать идентификатор SID пользователя в Windows через реестр

  1. Нажмите Win + R и введите в диалоговое окно regedit, затем нажмите Enter.
  2. В реестре скопируйте/вставьте или перейдите по пути HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList.
  3. Ниже значения ProfileList, Вы увидите всех пользователей и их идентификаторы SID.

Узнать идентификатор SID пользователя через реестр


Смотрите еще:

  • Служба профилей пользователей не удалось войти в систему windows 10
  • Как создать локальную учетную запись Пользователя В Windows 10
  • Как включить или отключить учетную запись пользователя в Windows 10
  • Как переименовать локальную учетную запись пользователя в Windows 10
  • Изменить пароль пользователя Windows с помощью командной строки 

[ Telegram | Поддержать ]

Как узнать SID пользователя

Если заголовок поста сразу вселил недоумение в вашу голову, его можно смело пропускать — так как тема весьма специфичная. Для оставшихся любопытствующих, чуть позже дам краткую справку, чтобы стало понятнее, но для начала расскажу что же меня сподвигло всё это написать.

Сюжет, наверное, знаком многим админам… в какой-то момент тебе говорят что на сервере пропала какая-то папка, а возможно и не одна, причем пропала сама собой, никто не трогал. В чудесные исчезновения я давно не верю, и начинаются поиски пропажи. Алгоритм уже отработан — для начала смотрим на наличие скрытых файлов в каталоге, где жила потеряшка, проходим там прогой R-Studio и если ничего не находится, то скорее всего и не удалялось, а просто перемещено… и возможно в корзину. Круг подозреваемых обычно ограничен, но иногда быстрее в мусорках пользователей порыться тем же Total Commander, включив отображение системных файлов. Корзины пользователей имеют уникальный идентификатор и лежат в общем каталоге $RECYCLE.BIN на дисках. Вот мы и подобрались к главной теме…

Итак, в Windows, любой учетной записи пользователя присваивается уникальный идентификатор безопасности SID (Security Identifier). По сути, операционная система оперирует именно SID-ами, а не именами пользователей. Если вы когда-либо назначали права доступа к папкам или файлам разным пользователям, а потом какого-то пользователя удаляли из системы, то могли видеть оставшиеся SID в свойства ресурса.

Стоит заметить, что, на самом деле, не все SID уникальны, и у встроенных учетных записей (Администратор, Гость), они постоянны. SID-ы локальных учёток хранятся в базе данных диспетчера учетных записей SAM (Security Account Manager), для доменных, соответсвенно в Active Directory.

Как узнать SID пользователя или по известному SID определить его имя?

Есть несколько способов это сделать. Проще всего посмотреть SID текущего пользователя с помощью утилиты whoami. Для этого в консоли cmd и выполним команду:

whoami /user
Сведения о пользователе
----------------
Пользователь      SID
================= ===========================================
srvадминистратор S-1-5-21-1717474732-638561625-496602587-500

Как видите, я выполнил вход под админом, но это не интересно. Гораздо полезнее узнать SID произвольного пользователя. Для этого воспользуемся утилитой WMIC из Windows Management Instrumentation (WMI).

Посмотрим SID пользователя Kirill можно такой командой:

wmic useraccount where name='test_user' get sid
SID
S-1-5-21-1717474732-638561625-496602587-1004

Определение имени пользователя по SID (обратная процедура) будет выглядеть так:

wmic useraccount where sid='S-1-5-21-1717474732-638561625-496602587-1004' get name

Аналогичные действия можно проводить и на PowerShell, но я в нём не силён, инфа есть в сети, кто заинтересовался данной темой почитает, для моей задачи было достаточно и этого. Как и предполагалось, потерянная папка нашлась у одного из пользователей в корзине.

Подписывайтесь на канал

Яндекс.Дзен

и узнавайте первыми о новых материалах, опубликованных на сайте.

Содержание

  1. Как узнать SID пользователя по имени и наоборот
  2. Получить SID локального пользователя
  3. Получить SID доменного пользователя
  4. Определить имя пользователя по SID
  5. Как узнать uid пользователя windows
  6. Что такое Sid windows
  7. База Security Account Manager
  8. 1 способ узнать sid пользователя, команда WMIC
  9. 2 способ узнать sid пользователя, команда Whoami
  10. 3 способ узнать sid пользователя, ADUC и ADSIedit
  11. 4 способ узнать sid пользователя, утилита PsGetSid
  12. 5 способ узнать sid пользователя, PowerShell и System.Security.Principal.NTAccount
  13. 6 способ узнать sid пользователя, Get-ADUser
  14. Как массово определить SID пользователя
  15. Как узнать идентификатор безопасности (SID) пользователя в Windows 10
  16. Как узнать идентификатор безопасности (SID) пользователя в командной строке
  17. Как узнать идентификатор безопасности (SID) пользователя в Windows PowerSell
  18. Как узнать идентификатор безопасности (SID) в редакторе реестра
  19. Как узнать SID пользователя
  20. Whoami
  21. PowerShell и WMI
  22. PsGetSid
  23. Как узнать SID пользователя или группы AD по имени и наоборот?
  24. Как получить SID локального пользователя?
  25. Узнать SID пользователя или группы в домене AD по имени
  26. Как узнать имя учетной записи пользователя или группы по SID?
  27. Поиск объектов в Active Directory по SID

Как узнать SID пользователя по имени и наоборот

В среде Windows каждому доменному и локальному пользователю, группе и другим объектам безопасности, присваивается уникальный идентификатор — Security Identifier или SID. Именно SID, а не имя пользователя используется для контроля доступа к различным ресурсам: сетевым каталогам, ключам реестра, объектам файловой системы и т.д. В этой статье мы покажем несколько простых способов узнать SID пользователя и обратной процедуры – определения имени пользователя Windows по его SID.

Для преобразования username в SID можно воспользоваться отличий утилитой из комплекта Sysinternals — PsGetSid. Но ее придется выкачивать и устанавливать на каждую систему вручную.

Гораздо проще воспользоваться утилитой командной строки или скриптом Powershell

Получить SID локального пользователя

Чтобы получить SID локальной учетной записи на данной машине, можно воспользоваться утилитой wmic, обращающейся к WMI хранилищу. Для локального пользователя test_user команда будет такой:

wmic useraccount where name=’test_user’ get sid

wmic get sidВ этом примере SID пользователя — S-1-5-21-1175651296-1316126944-203051354-1005

Если нужно узнать SID текущего пользователя, выполните такую команду:

wmic useraccount where name=’%username%’ get sid

На PowerShell скрипт, выдающий тот же результат можно реализовать с помощью двух классов SecurityIdentifier и NTAccount.

Получить SID доменного пользователя

Узнать SID текущей доменной учетной записи можно командой:

whoami user sidДля получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell.

get aduser sidЕсли модуль AD для PowerShell отсутствует, через Powershell можно запросить данные из домена так:

posh SecurityIdentifier NTAccountЭта же команда в одну строку:

(new-object security.principal.ntaccount “jjsmith»).translate([security.principal.securityidentifier])

Определить имя пользователя по SID

Чтобы узнать имени учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where sid=’S-1-3-12-12452343106-3544442455-30354867-1434′ get name

На PowerShell при помощи модуля AD для Powershell:

0665d74d1b4dba731ab69bf877b64265

Попробуйте наши услуги обслуживания и получите третий месяц обслуживания в подарок!

Источник

Как узнать uid пользователя windows

kak uznat sid polzovatelya windows

Добрый день уважаемые читатели, сегодня мы продолжим изучение Active Directory, а точнее его сущностей. Под сущностью понимается некий объект, в нашем случае это учетная запись пользователя, но их список куда больше. Наша сегодняшняя задача изучить как узнать sid пользователя windows в домене.

Что такое Sid windows

Давайте для начала с вами выясним определение SID или Security Identifier > это идентификатор безопасности, который используется в семействе операционных систем Windows для идентификации объекта:

Структура SID

Давайте разбираться из каких частей состоит Security IDentifier.

Struktura SID

По мимо этого, в любой ос Windows существуют встроенные или BuiltIn группы и учетные записи, например администратор или гость, в каждой ос виндоус они имеют одинаковые SID значения. Посмотреть вы их можете в оснастке Управление компьютером.

Kak uznat sid polzovatelya windows v domene 2

Сделаны они для того, что если у вас нет Active Directory, то вы могли бы администрировать данные системы с помощью них. Все SID для данных учетных записей находятся в локальной базе данных Windows, под названием Security Account Manager или SAM. Все сиды пользователей домена лежат в базе Active Directory в файле NTDS.dit.

База Security Account Manager

Давайте посмотрим за, что отвечает Security Account Manager:

Хранится SAM (Security Account Manager) в реестре Windows. Как открыть реестр windows, я уже описывал не однократно, переходим в ветку.

Если вы кликните правым кликом и из контекстного меню выберете Разрешения, то обнаружите, что права доступа есть только у системы, а вот у администраторов локальной станции их нет, но при желании можно их получить, это лишний механизм защиты, так как можно вытащить хэши учетных записей и попытаться их взломать.

Kak uznat sid polzovatelya windows v domene 3

SAM это библиотека samsrv.dll, которая работает в Windows в виде процесса lsass.exe, увидеть это можно в диспетчере задач.

Security Account Manager

1 способ узнать sid пользователя, команда WMIC

Для примера я все буду показывать на своей рабочей станции с установленной в ней Windows Server 2012 R2, станция принадлежит домену Active Directory. Первый метод, это использование старого, доброго WMIC инструментария (Windows Management Instrumentation). Все, что вам нужно, это знать имя пользователя, точнее его логин. Чтобы посмотреть список локальных пользователей введите команду

На выходе вы получите список локальных пользователей.

sposob uznat sid polzovatelya komanda WMIC

Чтобы выяснить все логины доменных пользователей вводим команду

Я вам это уже рассказывал в заметке Как узнать имена учетных записей Администраторов домена. На выходе получите, что то такое

Kak uznat sid polzovatelya windows v domene 3 1 1

Далее зная логин все просто вводим

Как видите все работает.

Kak uznat sid polzovatelya windows v domene 4

Можно наоборот по SID узнать логин пользователя, потребуется это в тех случаях, когда например в списках доступа у вас видится сид, и вы хотите узнать кому он принадлежал.

Еще с помощью WMI вы можете реализовать вот, что укажите имя компьютера (для локального) или домена (для доменного пользователя). Ниже пример получения SID локальной рабочей станции

Для доменной структуры

sposob uznat sid polzovatelya komanda WMIC 2 1

Получить логин по SID аналогично предыдущей команду.

2 способ узнать sid пользователя, команда Whoami

Тоже довольно старенькая команда из cmd.exe. Вводим

Получаем полный сид текущего залогиненного пользователя.

sposob uznat sid polzovatelya komanda Whoami

Если ввести Whoami /logonid, то можно получить logonid, выглядит он вот так S-1-5-5-0-595920

Если ввести ключ /all, то вы увидите, все sid локальных (bultin) групп и пользователей

sposob uznat sid polzovatelya komanda Whoami 2

Так же вы увидите сведения о привилегиях.

sposob uznat sid polzovatelya komanda Whoami 3

На мой взгляд, данный метод, немного проще первого, так как требует ввода меньшего количества ключей.

3 способ узнать sid пользователя, ADUC и ADSIedit

В третьем способе мы воспользуемся средствами графического интерфейса, а точнее самой оснастке Active Directory пользователи и компьютеры. В ней есть встроенный механизм называется редактор атрибутов Active Directory. Открываем вкладку Вид и ставим галку Дополнительные параметры, да забыл отметить нужно быть членом группы Администраторы схемы.

uznat sid polzovatelya ADUC i ADSIedit 1

После чего заходим в свойства учетной записи, вкладка Редактор атрибутов и находим там поле objectSid.

uznat sid polzovatelya ADUC i ADSIedit 2

Так же SID можно посмотреть и во встроенной оснастке ADSIedit, подключаетесь там к контексту именования имен и заходите в свойства нужной учетной записи.

uznat sid polzovatelya ADUC i ADSIedit 4

Да чуть не забыл в Windows Server 2012 R2 есть такое средство как Центр администрирования Active Directory, ищите там нужную учетную запись и в ней находите пункт SID.

uznat sid polzovatelya ADUC i ADSIedit 3

4 способ узнать sid пользователя, утилита PsGetSid

Есть такая замечательная утилита от Microsoft од названием PsGetSid.

Когда вы скачаете и разархивируете файл, вы получите папку с большим набором утилит, среди них будет PsGetSid.

uznat sid polzovatelya utilita PsGetSid 1

смысл у данной утилиты очень простой, она входит в состав Sysinternals и умеет получать SID пользователя по его имени и наоборот, умеет получать как локальных пользователей, так и доменных.

Вводим команду psgetsid имя компьютералогин учетки

и наоборот, выясним имя по SID:

uznat sid polzovatelya utilita PsGetSid 2

5 способ узнать sid пользователя, PowerShell и System.Security.Principal.NTAccount

Пятым методом будет использование в powershell класса System.Security.Principal.NTAccount. Для домена Active Directory.

sid wmi powershell

Для локального пользователя команда будет такой.

6 способ узнать sid пользователя, Get-ADUser

Снова воспользуемся командлетами powershell Get-ADUser. вводим команду для получения SID доменного пользователя.

получить наоборот логин по sid

uznat sid polzovatelya Get ADUser

Как массово определить SID пользователя

Все описанные выше методы хороши, когда вам нужно найти SID для одного или двух пользователей, а как быть если у вас это пачка логинов. Например мне это нужно было при предоставлении прав. Предположим, что у меня есть текстовый файл со списком логинов, каждый на новой строке. Мне нужно для каждого определить его Security Identifier.

find out the sid in bulk 01

В этом нам поможет скрипт PowerShell. Откройте ISE.

На выходе будет удобный список, при желании можно все экспортировать в csv или txt файл.

Источник

Как узнать идентификатор безопасности (SID) пользователя в Windows 10

1532900859 get sid 1

В данной статье рассмотрено несколько способов, с помощью которых можно узнать идентификатор безопасности (SID) пользователя в операционной системе Windows 10.

Операционная система использует именно идентификаторы безопасности (SID) для контроля доступа к различным ресурсам, таким как объекты файловой системы, ключам реестра, сетевым каталогам, что означает, что даже если вы измените имя пользователя, то это не повлияет на какие-либо предварительные настройки для этой учетной записи, поскольку каждая конфигурация привязана к SID, который остается постоянным.

Идентификатор безопасности может быть полезен во время выполнения определенных команд, связанных с безопасностью компьютера.

Как узнать идентификатор безопасности (SID) пользователя в командной строке

Чтобы узнать SID текущего пользователя воспользуемся утилитой whoami, для этого откройте командную строку и выполните следующую команду:

1532901364 get sid 2

Также узнать SID текущего пользователя можно выполнив следующую команду:

wmic useraccount where name=»%username%» get name,sid

1532901434 get sid 3

Чтобы узнать все SID присутствующие в операционной системе, выполните команду:

1532901446 get sid 4

Чтобы узнать SID определённого пользователя, выполните следующую команду:

wmic useraccount where name=»TestUser1″ get sid

1532901452 get sid 5

Чтобы узнать имя пользователя учетной записи по SID (обратная процедура), выполните команду:

wmic useraccount where sid=» S-1-5-21-3210479907-464018182-414762983-1002 » get name

1532901408 get sid 6

Как узнать идентификатор безопасности (SID) пользователя в Windows PowerSell

Также узнать идентификатор безопасности можно используя консоль Windows PowerShell.

Чтобы узнать все идентификаторы безопасности (SID) в консоли Windows PowerShell, выполните команду:

Get-WmiObject Win32_UserAccount | Select Name,SID

1532902240 get sid 7

Чтобы узнать SID определённого пользователя, выполните следующую команду:

1532902217 get sid 8

Также узнать SID определённого пользователя, можно выполнив команду:

1532902251 get sid 9

Чтобы узнать имя пользователя учетной записи по SID (обратная процедура), выполните команду следующего вида:

Где вместо SID укажите нужный идентификатор безопасности.

В данном примере команда выглядит так:

1532902237 get sid 10

Как узнать идентификатор безопасности (SID) в редакторе реестра

Используя редактор реестра, также можно узнать идентификатор безопасности (SID), для этого откройте редактор реестра нажав сочетание клавиш 1532903268 winkey+ R и в открывшемся окне Выполнить введите regedit и нажмите клавишу Enter ↵.

1532903042 get sid 11

В открывшемся окне редактора реестра, скопируйте/вставьте или перейдите по следующему пути:

В разделе ProfileList вы увидите всех пользователей и их идентификаторы SID.

Источник

Как узнать SID пользователя

Операционная система Windows для идентификации использует специальный идентификатор безопасности (Security Identifier, SID), который присваивается каждой учетной записи пользователя (а также компьютера или группы) при ее создании. В отличие от имени каждый SID уникален, что позволяет системе однозначно идентифицировать пользователя. Поэтому операционная система оперирует именно SID-ами и использует их для контроля доступа к различным ресурсам — принтерам, файлам и папкам и т.п.

Примечание. Говоря об уникальности SID, надо сделать одну оговорку. В Windows существуют так называемые встроенные (BuiltIn) учетные записи, такие как Administrator или Guest. SID-ы этих записей одинаковы в каждом экземпляре Windows вне зависимости от версии ОС. Это дает администратору возможность более-менее централизованно управлять доступом при отсутствии доменной структуры.

SID для локальных учетных записей храниться базе данных диспетчера учетных записей (Security Account Manager, SAM) на локальном компьютере, для доменных — в базе Active Directory. И сегодня речь пойдет о том, как можно узнать SID пользователя по его имени и наоборот, как выяснить имя пользователя по его SID.

Whoami

Когда требуется посмотреть SID текущего пользователя, то проще всего воспользоваться утилитой whoami. Для этого надо открыть консоль cmd и выполнить команду:

sid1

В том случае, когда необходимо узнать SID произвольного пользователя, можно воспользоваться Windows Management Instrumentation (WMI). Один из инструментов для работы с WMI — утилита WMIC. Так например, узнать SID пользователя Kirill можно такой командой:

wmic useraccount where name=′Kirill′ get sid

А можно и наоборот, выяснить имя пользователя по его SID:

wmic useraccount where sid=′S-1-5-21-4178654016-3479515840-607560339-1000′ get name

sid2

Дополнительно в WMI-запросе можно указать имя компьютера (для локального) или домена (для доменного пользователя). Например эта команда выведет SID локального администратора:

wmic useraccount where (name=′administrator′ and domain=′%computername%′) get sid

wmic useraccount where (name=′administrator′ and domain=′contoso′) get sid

sid3

Для обычного пользователя все также, узнаем SID по имени:

wmic useraccount where (name=′kirill′ and domain=′contoso′) get sid

wmic useraccount where (sid=′S-1-5-21-2404695605-4156858507-746700462-1001′ and domain=′contoso′) get name

sid4

Примечание. В запросе вместо имени компьютерадомена можно использовать переменные %computername% и %userdomain%.

PowerShell и WMI

PowerShell также позволяет работать с WMI. Для примера обратимся к классу win32_userAccount и выведем SID доменного:

и локального пользователя:

Также вместо имени компьютера и домена можно указывать переменные окружения $env:computername и $env:userdomain, например:

sid5

Для обратной операции (узнать имя пользователя по SID) нам потребуется использовать свойство SID класса win32_SID. Например:

sid6

Как вариант, для работы с WMI можно использовать командлет Get-WmiObject (или Get-CimInstance). Например так мы узнаем SID пользователя:

sid7

sid8

Для доменного пользователя процедура идентична, только в виде параметра передаются имя пользователя и имя домена:

sid9

Для обратной процедуры получения имени по SID делаем наоборот — сначала создаем объект класса System.Security.Principal.SecurityIdentifier и передаем ему в виде параметра SID пользователя, а затем переводим его в объект класса System.Security.Principal.NTAccount и выводим свойство Value, содержащее имя пользователя:

sid10

PsGetSid

Как видите, встроенных средств для выяснения SID в Windows предостаточно, но для полноты картины возьмем еще одно, от стороннего разработчика.

PsGetSid — утилита командной строки от Sysinternals, входящая в состав пакета PsTools. PsGetSid умеет получать SID пользователя по его имени и наоборот, работает как с локальными, так и с доменными аккаунтами. Утилита не требует установки, ее достаточно скопировать на нужный компьютер и запустить.

Для примера запросим SID пользователя по его имени:

Источник

Как узнать SID пользователя или группы AD по имени и наоборот?

В среде Windows каждому доменному и локальному пользователю, группе и другим объектам безопасности, присваивается уникальный идентификатор — Security Identifier или SID. Именно SID, а не имя пользователя используется для контроля доступа к различным ресурсам: сетевым папкам, ключам реестра, объектам файловой системы, принтерам и т.д. В этой статье мы покажем несколько простых способов узнать SID пользователя или группы (локальных или из Active Directory), и обратную процедуру – определение имени пользователя или группы Windows по известному SID.

Получение учетки по SID:

Как получить SID локального пользователя?

Чтобы получить SID локальной учетной записи на данном компьютере, можно воспользоваться утилитой wmic, которая позволяет обратится к пространству имен WMI компьютера. Для получения SID локального пользователя test_user можно использовать утилиту WMIC:

wmic useraccount where name=’test_user’ get sid

wmic get sid

Команда вернула нам SID указанного пользователя — S-1-5-21-1175651296-1316126944-203051354-1005.

Если нужно узнать SID текущего пользователя (под которым выполняется команда), используйте такую команду:

wmic useraccount where name=’%username%’ get sid

Узнать SID пользователя или группы в домене AD по имени

Вы можете узнать SID текущей доменной учетной записи командой:

whoami user sid

Узнать SID доменного пользователя можно с помощью WMIC. В этом случае в команде нужно указать имя домена:

wmic useraccount where (name=’jjsmith’ and domain=′corp.winitpro.ru′) get sid

Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell. Получим SID для аккаунта jjsmith:

get aduser sid

Вы можете получить SID группы AD с помощью другого командлета — Get-ADGroup:

Get ADGroup get sid

posh SecurityIdentifier NTAccountЭта же команда PowerShell в одну строку:

(new-object security.principal.ntaccount “jjsmith»).translate([security.principal.securityidentifier])

Как узнать имя учетной записи пользователя или группы по SID?

Чтобы узнать имя учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where sid=’S-1-3-12-12452343106-3544442455-30354867-1434′ get name

На PowerShell получить имя пользователя по его SID можно с помощью модуля AD для PowerShell:

Чтобы найти имя доменной группы по известному SID используйте команду:

Get ADGroup get name by sid

Также можно узнать SD группу и пользователя с помощью встроенных классов PowerShell (без дополнительных модулей):

Поиск объектов в Active Directory по SID

Если вы не знаете к какому типу объекта AD относится некий SID и какой точно командлет использовать для его поиска (Get-AdUser, Get-ADComputer или Get-ADGroup), вы можете использовать универсальный метод поиска объектов в Active Directory по SID с помощью командлета Get-ADObject (параметр IncludeDeletedObjects позволяет искать по удаленным объектам AD в корзине).

SIDGet ADObject get object by sid

В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass).

Источник

Is there a way to connect between the values under HKEY_USERS to the actual username?
I saw some similar questions, but most (if not all) talks about C# code, and my need is in VBScript.

asked May 27, 2010 at 7:40

modz0r's user avatar

If you look at either of the following keys:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlhivelist

You can find a list of the SIDs there with various values, including where their «home paths» which includes their usernames.

I’m not sure how dependable this is and I wouldn’t recommend messing about with this unless you’re really sure what you’re doing.

answered May 27, 2010 at 7:57

Hans Olsson's user avatar

Hans OlssonHans Olsson

53.7k14 gold badges92 silver badges114 bronze badges

2

It is possible to query this information from WMI. The following command will output a table with a row for every user along with the SID for each user.

wmic useraccount get name,sid

You can also export this information to CSV:

wmic useraccount get name,sid /format:csv > output.csv

I have used this on Vista and 7. For more information see WMIC — Take Command-line Control over WMI.

answered Jun 8, 2011 at 20:10

dcharles's user avatar

dcharlesdcharles

4,7722 gold badges30 silver badges29 bronze badges

4

  1. Open Reg HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

  2. make a loop to get all subkeys

  3. the subkeys you are interested with are those started with [S-1-5-21-] which means user (see key name [ProfileImagePath] they are always started with a path c:Users)

  4. Those starting with [S-1-5-21-12] are all local users

  5. Those starting with [S-1-5-21-13] are all network users [if joined to Domained network] that are previously logged on the machine.

answered Apr 25, 2012 at 7:26

Stone's user avatar

StoneStone

1711 silver badge2 bronze badges

1

By searching for my userid in the registry, I found

HKEY_CURRENT_USERVolatile EnvironmentUsername

Petter Friberg's user avatar

answered Sep 12, 2016 at 21:13

Alan Frank's user avatar

Alan FrankAlan Frank

891 silver badge2 bronze badges

2

You can use the command PSGetSid from Microsoft’s SysInternals team.

Download URL: http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx

Usage:

psgetsid [\computer[,computer[,...] | @file] [-u username [-p password]]] [account|SID]
-u  Specifies optional user name for login to remote computer.
-p  Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.
Account PsGetSid will report the SID for the specified user account rather than the computer.
SID PsGetSid will report the account for the specified SID.
Computer    Direct PsGetSid to perform the command on the remote computer or computers specified. If you omit the computer name PsGetSid runs the command on the local system, and if you specify a wildcard (\*), PsGetSid runs the command on all computers in the current domain.
@file   PsGetSid will execute the command on each of the computers listed in the file.

Example:

psgetsid S-1-5-21-583907252-682003330-839522115-63941

NB:

  • Where the user is a domain/AD(LDAP) user, running this on any computer on the domain should give the same results.
  • Where the user is local to the machine the command should either be run on that machine, or you should specify the computer via the optional parameter.

Update

If you use PowerShell, the following may be useful for resolving any AD users listed:

#create a drive for HKEY USERS:
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue

#List all immediate subfolders
#where they're a folder (not a key)
#and they's an SID (i.e. exclude .DEFAULT and SID_Classes entries)
#return the SID
#and return the related AD entry (should one exist).
Get-ChildItem -Path 'HKU:' `
| ?{($_.PSIsContainer -eq $true) `
-and ($_.PSChildName -match '^S-[d-]+$')} `
| select @{N='SID';E={$_.PSChildName}} `
, @{N='Name';E={Get-ADUser $_.PSChildName | select -expand Name}}

You could also refine the SID filter further to only pull back those SIDs which will resolve to an AD account if you wished; more on the SID structure here: https://technet.microsoft.com/en-us/library/cc962011.aspx

answered Jun 13, 2014 at 13:51

JohnLBevan's user avatar

JohnLBevanJohnLBevan

21.9k11 gold badges93 silver badges173 bronze badges

In the HKEY_USERSoneyouwanttoknow you can look at SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders and it will reveal their profile paths. c:userswhothisisDesktop, etc.

Kingsley's user avatar

Kingsley

14.2k5 gold badges32 silver badges52 bronze badges

answered Dec 2, 2018 at 22:29

Bobby Kearan's user avatar

1

Done it, by a bit of creative programming,

  1. Enum the Keys in HKEY_USERS for those funny number keys…

  2. Enum the keys in HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

and you will find the same numbers…. Now in those keys look at the String value:
ProfileImagePath = «SomeValue» where the values are either:

«%systemroot%system32configsystemprofile»… not interested in this one… as its not a
directory path…

%SystemDrive%Documents and SettingsLocalService — «Local Services»
%SystemDrive%Documents and SettingsNetworkService «NETWORK SERVICE»

or

%SystemDrive%Documents and SettingsUSER_NAME, which translates directly to the «USERNAME» values in most un-tampered systems, ie. where the user has not changed the their user name after a few weeks or altered the paths explicitly…

answered Mar 7, 2012 at 15:41

spadge's user avatar

1

for /f "tokens=8 delims=" %a in ('reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlhivelist" ^| find "UsrClass.dat"') do echo %a

alecxe's user avatar

alecxe

455k116 gold badges1061 silver badges1179 bronze badges

answered May 21, 2013 at 19:16

DaLua's user avatar

DaLuaDaLua

91 bronze badge

1

The proper way to do this requires leveraging the SAM registry hive (on Windows 10, this requires NT AUTHORITYSYSTEM privileges). The information you require is in the the key: HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames.

Each subkey is the username, and the default value in each subkey is a binary integer. This value (converted to decimal) actually corresponds to the last chunk of the of the SID.

Take «Administrator» for example, by default it is associated with the integer 0x1f4 (or 500).

So, in theory you could take the build a list of SIDS based on the subkey names of the HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionProfileList key and/or HKEY_USERS key, parse out the the value after the last hyphen (-), and compare that to the info from the SAM hive.

If you don’t have NT AUTHORITYSYSTEM privileges, the next best way to approach this may be to follow the other method described in the answers here.

reference: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/81d92bba-d22b-4a8c-908a-554ab29148ab

answered Oct 27, 2019 at 2:38

SW_user2953243's user avatar

Is there a way to connect between the values under HKEY_USERS to the actual username?
I saw some similar questions, but most (if not all) talks about C# code, and my need is in VBScript.

asked May 27, 2010 at 7:40

modz0r's user avatar

If you look at either of the following keys:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlhivelist

You can find a list of the SIDs there with various values, including where their «home paths» which includes their usernames.

I’m not sure how dependable this is and I wouldn’t recommend messing about with this unless you’re really sure what you’re doing.

answered May 27, 2010 at 7:57

Hans Olsson's user avatar

Hans OlssonHans Olsson

53.7k14 gold badges92 silver badges114 bronze badges

2

It is possible to query this information from WMI. The following command will output a table with a row for every user along with the SID for each user.

wmic useraccount get name,sid

You can also export this information to CSV:

wmic useraccount get name,sid /format:csv > output.csv

I have used this on Vista and 7. For more information see WMIC — Take Command-line Control over WMI.

answered Jun 8, 2011 at 20:10

dcharles's user avatar

dcharlesdcharles

4,7722 gold badges30 silver badges29 bronze badges

4

  1. Open Reg HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

  2. make a loop to get all subkeys

  3. the subkeys you are interested with are those started with [S-1-5-21-] which means user (see key name [ProfileImagePath] they are always started with a path c:Users)

  4. Those starting with [S-1-5-21-12] are all local users

  5. Those starting with [S-1-5-21-13] are all network users [if joined to Domained network] that are previously logged on the machine.

answered Apr 25, 2012 at 7:26

Stone's user avatar

StoneStone

1711 silver badge2 bronze badges

1

By searching for my userid in the registry, I found

HKEY_CURRENT_USERVolatile EnvironmentUsername

Petter Friberg's user avatar

answered Sep 12, 2016 at 21:13

Alan Frank's user avatar

Alan FrankAlan Frank

891 silver badge2 bronze badges

2

You can use the command PSGetSid from Microsoft’s SysInternals team.

Download URL: http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx

Usage:

psgetsid [\computer[,computer[,...] | @file] [-u username [-p password]]] [account|SID]
-u  Specifies optional user name for login to remote computer.
-p  Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.
Account PsGetSid will report the SID for the specified user account rather than the computer.
SID PsGetSid will report the account for the specified SID.
Computer    Direct PsGetSid to perform the command on the remote computer or computers specified. If you omit the computer name PsGetSid runs the command on the local system, and if you specify a wildcard (\*), PsGetSid runs the command on all computers in the current domain.
@file   PsGetSid will execute the command on each of the computers listed in the file.

Example:

psgetsid S-1-5-21-583907252-682003330-839522115-63941

NB:

  • Where the user is a domain/AD(LDAP) user, running this on any computer on the domain should give the same results.
  • Where the user is local to the machine the command should either be run on that machine, or you should specify the computer via the optional parameter.

Update

If you use PowerShell, the following may be useful for resolving any AD users listed:

#create a drive for HKEY USERS:
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue

#List all immediate subfolders
#where they're a folder (not a key)
#and they's an SID (i.e. exclude .DEFAULT and SID_Classes entries)
#return the SID
#and return the related AD entry (should one exist).
Get-ChildItem -Path 'HKU:' `
| ?{($_.PSIsContainer -eq $true) `
-and ($_.PSChildName -match '^S-[d-]+$')} `
| select @{N='SID';E={$_.PSChildName}} `
, @{N='Name';E={Get-ADUser $_.PSChildName | select -expand Name}}

You could also refine the SID filter further to only pull back those SIDs which will resolve to an AD account if you wished; more on the SID structure here: https://technet.microsoft.com/en-us/library/cc962011.aspx

answered Jun 13, 2014 at 13:51

JohnLBevan's user avatar

JohnLBevanJohnLBevan

21.9k11 gold badges93 silver badges173 bronze badges

In the HKEY_USERSoneyouwanttoknow you can look at SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders and it will reveal their profile paths. c:userswhothisisDesktop, etc.

Kingsley's user avatar

Kingsley

14.2k5 gold badges32 silver badges52 bronze badges

answered Dec 2, 2018 at 22:29

Bobby Kearan's user avatar

1

Done it, by a bit of creative programming,

  1. Enum the Keys in HKEY_USERS for those funny number keys…

  2. Enum the keys in HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

and you will find the same numbers…. Now in those keys look at the String value:
ProfileImagePath = «SomeValue» where the values are either:

«%systemroot%system32configsystemprofile»… not interested in this one… as its not a
directory path…

%SystemDrive%Documents and SettingsLocalService — «Local Services»
%SystemDrive%Documents and SettingsNetworkService «NETWORK SERVICE»

or

%SystemDrive%Documents and SettingsUSER_NAME, which translates directly to the «USERNAME» values in most un-tampered systems, ie. where the user has not changed the their user name after a few weeks or altered the paths explicitly…

answered Mar 7, 2012 at 15:41

spadge's user avatar

1

for /f "tokens=8 delims=" %a in ('reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlhivelist" ^| find "UsrClass.dat"') do echo %a

alecxe's user avatar

alecxe

455k116 gold badges1061 silver badges1179 bronze badges

answered May 21, 2013 at 19:16

DaLua's user avatar

DaLuaDaLua

91 bronze badge

1

The proper way to do this requires leveraging the SAM registry hive (on Windows 10, this requires NT AUTHORITYSYSTEM privileges). The information you require is in the the key: HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames.

Each subkey is the username, and the default value in each subkey is a binary integer. This value (converted to decimal) actually corresponds to the last chunk of the of the SID.

Take «Administrator» for example, by default it is associated with the integer 0x1f4 (or 500).

So, in theory you could take the build a list of SIDS based on the subkey names of the HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionProfileList key and/or HKEY_USERS key, parse out the the value after the last hyphen (-), and compare that to the info from the SAM hive.

If you don’t have NT AUTHORITYSYSTEM privileges, the next best way to approach this may be to follow the other method described in the answers here.

reference: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/81d92bba-d22b-4a8c-908a-554ab29148ab

answered Oct 27, 2019 at 2:38

SW_user2953243's user avatar

Like this post? Please share to your friends:
  • Как переформатировать флешку после установки windows
  • Как переустановить драйвер на микрофон windows 10
  • Как петь караоке на ноутбуке через микрофон windows 10
  • Как по oem ключу узнать версию windows
  • Как переустановить драйвер на клавиатуру в windows 10