在 Windows 上,从控制面板更改用户帐户名称后,该名称将与用户配置文件名称不同。
如何从更改的用户帐户名中找到原始的用户配置文件名称?
答案1
每个帐户都有两个“名称”属性,因此让我稍微解释一下,以免大家混淆。一个是 SAM(安全帐户管理器)帐户名,它显示在 的输出中net user
。就低级操作系统组件而言,这是帐户的名称。另一个是显示名称,它显示在控制面板的用户帐户页面和“开始”菜单中。MMC 的本地用户和组管理单元 ( lusrmgr.msc
) 同时显示:名称列中的 SAM 名称和全名列中的显示名称。SAM 名称用于生成配置文件文件夹。
除非使用此 MMC 管理单元,否则更改 SAM 名称并不容易。只有对 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
值保存的是其配置文件文件夹的路径。
答案2
如何从更改的用户帐户名中找到原始的用户配置文件名称?
在 Windows 安全系统事件日志中查找EventID 4781:帐户名称已更改:
4781:帐户名称已更改
由主题标识的用户:更改了由目标帐户标识的用户的正常登录名或 Win2k 之前的登录名:。事件 4738 实际上提供了有关此更改的更好信息。
本地 SAM 帐户和域帐户都会记录此事件。
您还将看到事件 ID 4738,它会告知您相同的信息。
主题:
执行操作的用户和登录会话。
- 安全 ID:帐户的 SID。
- 账户名:账户登录名。
- 帐户域:域或(本地帐户的情况下)计算机名称。
- 登录 ID 是一个半唯一(每次重启后唯一)的数字,用于标识登录会话。登录 ID 允许您向后关联登录事件 (4624) 以及在同一登录会话期间记录的其他事件。
目标帐户:
- 安全 ID:帐户的 SID
- 账户名称:账户名称
- 账户域名:账户所属的域名
- 旧帐户名称:旧登录名
- 新账户名:新登录名
答案3
这个答案基于这样的事实:重命名用户帐户不会自动更改配置文件路径。
如果帐户已重命名但配置文件路径未更改,则可以在注册表中
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