Как определить (оригинальное) имя профиля пользователя по измененному имени учетной записи пользователя в Windows?


8

В Windows имя учетной записи пользователя будет отличаться от имени профиля пользователя после его изменения с панели управления.

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

Ответы:


6

У каждой учетной записи есть два свойства «name», поэтому позвольте мне немного прояснить ситуацию, чтобы не запутаться. Одним из них является имя учетной записи SAM (Security Account Manager), которое отображается в выходных данных net user. Это имя учетной записи в отношении низкоуровневых компонентов ОС. Другое - это отображаемое имя, которое отображается на странице «Учетные записи пользователей» панели управления и в меню «Пуск». Оснастка «Местные пользователи и группы» для MMC ( lusrmgr.msc) отображает как: имя SAM в столбце «Имя», так и отображаемое имя в столбце «Полное имя». Имя SAM - это то, что используется для создания папки профиля.

Изменить имя SAM не очень легко, если вы не используете эту оснастку MMC. Только изменения имени SAM приводят к событию 4781. Я подозреваю, что, учитывая, что вы не видите событие 4781 в своем журнале, изменилось только отображаемое имя. Это создает только событие 4738 («учетная запись пользователя была изменена»). Событие 4738 перечисляет только новое значение для отображаемого имени, а не старое значение, и я подозреваю, что история отображаемых имен нигде не хранится (ваша лучшая надежда будет копаться в журналах для большего количества экземпляров 4738).

К счастью, найти путь к профилю из отображаемого имени не так уж сложно. Откройте PowerShell и введите эту команду:

gwmi win32_useraccount

Вы получаете кучу записей, которые выглядят так:

AccountType : 512
Caption     : <redacted>\tester
Domain      : <redacted>
SID         : S-1-5-21-<redacted>-1018
FullName    : Test Account
Name        : tester

Найдите тот, на FullNameкотором отображается отображаемое имя учетной записи. Затем посмотрите на SIDзначение (я отредактировал SID моей машины здесь). Откройте реестр и перейдите к ключу, упомянутому harrymc:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Откройте подключ с именем, совпадающим с идентификатором SID, который вы нашли. ProfileImagePathЗначение содержит путь к их папке профиля.


Я получаю это сообщение об ошибке после того, как ввел команду, как вы заявили:Get-LocalUser : The term 'Get-LocalUser' is not recognized as the name of a cmdlet....
Fenixtriver

@FeniXtriver Ой, похоже, что Get-LocalUserкомандлет не существует в Windows 7 версии PowerShell. (Я тестировал на Windows 10.) Я также отредактировал свой ответ для работы на Windows 7.
Бен Н

На самом деле я также тестировал Windows 10, но, похоже, он не работает. В любом случае, новая команда работает сейчас. Большое спасибо за ваш ценный вклад. Я отметил ваш ответ правильный. :)
Fenixtriver

8

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

В журнале событий системы безопасности Windows найдите EventID 4781: имя учетной записи было изменено :

4781: имя учетной записи было изменено

Пользователь, указанный в Subject: изменил либо обычное имя входа в систему, либо имя входа в систему, предшествующее Windows 2000, для пользователя, идентифицированного целевой учетной записью :. Событие 4738 фактически предоставляет лучшую информацию об этом изменении.

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

Вы также увидите событие с кодом 4738, информирующее вас о той же информации.

Тема:

Пользователь и сеанс входа, который выполнил действие.

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

Целевая учетная запись:

  • Идентификатор безопасности: SID учетной записи
  • Имя учетной записи: имя учетной записи
  • Домен аккаунта: домен аккаунта
  • Старая учетная запись: старое имя входа
  • Имя новой учетной записи: новое имя для входа

Исходный EventID 4781: имя учетной записи было изменено


Я не смог найти это событие в журнале событий. Есть ли какая-либо другая возможность, кроме изменения имени учетной записи пользователя, чтобы имя учетной записи пользователя отличалось от имени профиля пользователя? Или есть какой-то другой способ идентификации?
Fenixtriver

@FeniXtriver Вы смотрели в журнале событий безопасности ? Я не знаю других способов изменить имя профиля пользователя, если кто-то не взломал реестр.
DavidPostill

1
Я подозреваю, что здесь есть некоторая путаница в отношении имени учетной записи SAM и отображаемого имени. Я только что протестировал, и изменение отображаемого имени (например, с помощью панели управления) не создает событие 4781, поскольку оно не меняет имя SAM.
Бен Н

@DavidPostill Да, я заглянул в журнал событий безопасности. Я верю, что Бен Н прав. И я отметил его ответ как правильный. В любом случае, спасибо за вашу помощь. Не стесняйтесь, дайте мне знать, если у вас еще есть что добавить. :)
Fenixtriver

8

Этот ответ основан на том факте, что переименование учетной записи пользователя не приводит к автоматическому изменению пути профиля.

Если учетная запись была переименована, но путь к профилю не был изменен, имя пути можно найти в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList в элементе с именем ProfileImagePath, значение которого будет C:\Users\old-user-name.

образ нажмите для увеличения изображения

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

wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name

1
Чтобы добавить больше ... не net userперечислить старые имена пользователей тоже? Хорошо, если есть много имен пользователей, это все еще трудно понять, но на ПК это обычно не так.
LPChip

1
@harrymc Как вы узнали бы, какой путь к профилю для какого имени учетной записи тогда?
Fenixtriver

1
Один из способов - взять ключ, представляющий собой длинную строку, начинающуюся с 'S', и ввести в cmd команду wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name.
harrymc

@LPChip, ты прав.
Fenixtriver

@harrymc Проблема в том, что мы не знали бы, что такое SID. Я пометил ответ Бен Н в данный момент. В любом случае, большое спасибо за ваш вклад. Не стесняйтесь, дайте мне знать, если у вас есть что добавить. :)
Fenixtriver
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.