从HKEY_USERS值中获取用户名

mod*_*z0r 40 windows registry vbscript wmi

有没有办法将HKEY_USERS下的值与实际用户名相关联?
我看到了一些类似的问题,但大多数(如果不是全部)都讨论了C#代码,我需要的是VBScript.

Han*_*son 62

如果您查看以下任一键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

您可以在其中找到具有各种值的SID列表,包括其"主路径"(包括其用户名)的位置.

我不确定这是多么可靠,除非你真的确定你在做什么,否则我不建议搞乱这个.

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist似乎只是我看过的每个系统(Xp-7)上当前登录的用户...我不会考虑HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SSID>\ProfileImagePath是确定用户名的可靠方法(请参阅http://support.microsoft.com/kb/2454362). (10认同)

dch*_*les 26

可以从WMI查询此信息.以下命令将输出一个表,其中包含每个用户的行以及每个用户的SID.

wmic useraccount get name,sid
Run Code Online (Sandbox Code Playgroud)

您也可以将此信息导出为CSV:

wmic useraccount get name,sid /format:csv > output.csv
Run Code Online (Sandbox Code Playgroud)

我在Vista和7上使用过它.有关更多信息,请参阅WMIC - 对WMI进行命令行控制.


小智 12

  1. 打开Reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \

  2. 制作循环以获取所有子键

  3. 您感兴趣的子键是以[S-1-5-21-]开头的子键,表示用户(请参阅键名[ProfileImagePath],它们始终以路径c:\ Users开头)

  4. 以[S-1-5-21-12]开头的人都是本地用户

  5. 那些以[S-1-5-21-13] 开头的人都是以前在机器上登录的网络用户[ 如果加入了Domained网络 ].

  • 3包含错误,而不是明智的建议.[ProfileImagePath]无需以路径c:\ Users开头......请查看https://www.google.com/#hl=zh-CN&tbo=d&output=search&sclient=psy-ab&q=move+windows+7+用户+目录; 此外,正如其他地方对此线程发表评论,并且@spade提到如果用户/管理员更改了用户用户名后帐户创建和登录,则配置文件目录名称将不再与用户名匹配(http://support.microsoft.com )/ KB/2454362) (5认同)

小智 8

通过在注册表中搜索我的用户 ID,我发现

HKEY_CURRENT_USER\Volatile Environment\Username
Run Code Online (Sandbox Code Playgroud)

  • 那是 CURRENT_USER,而不是 USER (2认同)
  • 我知道这不是OP提出的确切答案,但这正是我想要的。 (2认同)