Я хотел бы получить дату создания учетной записи локального пользователя (Win 7, если это имеет значение). Я посмотрел на следующие объекты WMI (и Google, конечно):
Win32_UserAccount
Win32_NetworkLoginProfile
Возвращаемые объекты NetworkLoginProfile
имеют время последнего входа в систему, но не дату создания. Проверка Date Created
свойства их папки профиля просто дает дату, когда папка была создана, не обязательно сама учетная запись.
windows
powershell
wmi
user-accounts
MDMoore313
источник
источник
Ответы:
Данные находятся в SAM, но, по-видимому, Microsoft не документирует их публично, и я не нахожу официальный API для их получения. Из исходного кода
chntpw
утилиты видно, что значение хранится в разделе реестра «F» для каждой учетной записи. Quoth исходный код:Regripper проект судебно - медицинской экспертизы имеет плагин, samparse , который сообщит дату создания учетной записи.
Инструмент судебной экспертизы, вероятно, не то, что вам нужно, но похоже, что Microsoft не делает его легким.
При исследовании этого я нашел забавным, что Microsoft MVP не знал, что данные о создании учетной записи хранятся в SAM . В его пользу, может быть, он не отошел от
chntpw
утилиты, с которой я начал искать информацию о недокументированных структурах SAM.источник
Единственный способ узнать это - включить аудит управления учетными записями на компьютере r при создании учетной записи. Затем вы увидите EventID 4720 в журнале событий на дату создания. (В статье говорится, что Active Directory, но то же самое относится и к локальным учетным записям; я проверил.)
Без этого вы можете приблизиться, проверив дату создания в кусте реестра пользователя,
ntuser.dat
файле, папке профиля пользователя и т. Д., Но, как упоминалось в комментариях, это верно только в отношении первого входа пользователя в систему, поскольку именно тогда эти вещи созданы.К сожалению для вас, это случай «если вы не регистрировали его, то эта информация не существует».
источник
Я собирался дать вам сценарий POC PowerShell для извлечения и анализа времени создания, но я понял, что
chntpw
логика неверна. Значение, которое он называет временем создания, фактически является последним установленным временем пароля, хотя эти значения одинаковы при первоначальном создании учетной записи. Смотрите здесь для исчерпывающего описания SAM.Впрочем, вторая ссылка Эвана
samparse
может помочь. Глядя на это на самом деле работает. Если вы посмотрите на его источник здесь , строка 99:вы увидите, что это звонки
get_timestamp
от PerlParse::Win32Registry
. Я почти уверен, что это последнее время записи ключа. ПосколькуHKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>
создается впечатление, что определенный ключ ( ) содержит только указатель на соответствующий ключ RID, он не должен изменяться после создания, а время последней записи будет равно времени создания.Если вы хотите использовать больше встроенных инструментов, вот серия статей для сценаристов, объясняющих, как с помощью PowerShell:
Использование PowerShell для доступа к последним модифицированным временным меткам реестра
Повторное использование кода штампа времени PowerShell Registry
Создание прокси-функции для отображения меток времени в реестре
Использовать временные метки ключа реестра через PowerShell
источник
Эта команда в powershell должна сделать свое дело:
источник
Перейдите через Мой компьютер к
C: \ Users, и вы увидите все учетные записи пользователей, перечисленные на локальном компьютере. Вы можете щелкнуть правой кнопкой мыши соответствующую учетную запись пользователя и перейти к свойствам, и он покажет вам дату создания, она должна совпадать с созданием учетной записи пользователя.
Просто мои 2 цента
источник