如何从 Windows 中更改的用户帐户名称中识别(原始)用户配置文件名称?

Fen*_*ver 8 windows windows-7 user-accounts user-profiles windows-10

在 Windows 上,从控制面板更改后,用户帐户名称将与用户配置文件名称不同。

如何从更改后的用户帐户名称中找到原始用户配置文件名称?

Dav*_*ill 8

如何从更改后的用户帐户名称中找到原始用户配置文件名称?

在 Windows 安全系统事件日志中查找EventID 4781:帐户名称已更改

4781:帐户名称已更改

由 Subject: 标识的用户更改了由 Target Account: 标识的用户的正常登录名或 Win2k 之前的登录名。事件 4738 实际上提供了有关此更改的更好信息。

本地 SAM 帐户和域帐户都会记录此事件。

您还将看到事件 ID 4738,通知您相同的信息。

主题:

执行操作的用户和登录会话。

  • 安全 ID:帐户的 SID。
  • 帐户名:帐户登录名。
  • 帐户域:域或 - 在本地帐户的情况下 - 计算机名称。
  • 登录 ID 是标识登录会话的半唯一(重新启动之间唯一)编号。登录 ID 允许您向后关联登录事件 (4624) 以及在同一登录会话期间记录的其他事件。

目标账户:

  • 安全 ID:帐户的 SID
  • 账户名称:账户名称
  • 账户域:账户的域
  • 旧帐户名:旧登录名
  • 新账户名:新登录名

源事件ID 4781:帐户名称已更改


har*_*ymc 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
Run Code Online (Sandbox Code Playgroud)


Ben*_*n N 6

每个帐户有两个“名称”属性,所以让我澄清一下,以免混淆。一个是 SAM(安全帐户管理器)帐户名称,它显示在net user. 就低级操作系统组件而言,这是帐户的名称。另一个是显示名称,它显示在控制面板的用户帐户页面和开始菜单中。MMC 的本地用户和组管理单元 (lusrmgr.msc )同时显示:名称列中的 SAM 名称和全名列中的显示名称。SAM 名称用于生成配置文件文件夹。

除非您使用此 MMC 管理单元,否则更改 SAM 名称并不容易。只有对 SAM 名称的更改才会产生事件 4781。我怀疑,鉴于您在日志中没有看到事件 4781,只有显示名称发生了更改。这只会产生事件 4738(“用户帐户已更改”)。事件 4738 只列出显示名称的新值,而不是旧值,我怀疑显示名称的历史记录没有保存在任何地方(您最好的希望是通过日志挖掘更多 4738 实例)。

幸运的是,从显示名称中找到配置文件路径并不太难。打开 PowerShell 并键入以下命令:

gwmi win32_useraccount
Run Code Online (Sandbox Code Playgroud)

你会得到一堆看起来像这样的条目:

AccountType : 512
Caption     : <redacted>\tester
Domain      : <redacted>
SID         : S-1-5-21-<redacted>-1018
FullName    : Test Account
Name        : tester
Run Code Online (Sandbox Code Playgroud)

找到FullName显示帐户显示名称的那个。然后查看该SID值(我在这里编辑了我的机器 SID)。打开注册表并导航到 harrymc 提到的键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Run Code Online (Sandbox Code Playgroud)

打开与您找到的 SID 同名的子项。该ProfileImagePath值包含其配置文件文件夹的路径。