windows 从HKEY_USERS值获取用户名

1zmg4dgp  于 2023-06-24  发布在  Windows
关注(0)|答案(9)|浏览(325)

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

00jrzges

00jrzges1#

如果您查看以下键之一:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
您可以在那里找到一个SID列表,其中包含各种值,包括包含用户名的“主路径”。
我不确定这有多可靠,我不建议你乱搞这个,除非你真的确定你在做什么。

2hh7jdfx

2hh7jdfx2#

可以从WMI查询此信息。下面的命令将输出一个表,每个用户都有一行沿着每个用户都有一个SID。

wmic useraccount get name,sid

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

wmic useraccount get name,sid /format:csv > output.csv

我在Vista和7上使用过这个。有关更多信息,请参见WMIC - Take Command-line Control over WMI

m2xkgtsf

m2xkgtsf3#

1.打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
1.创建一个循环以获取所有子键
1.您感兴趣的子项是那些以[S-1-5-21-]开头的子项,这意味着user(请参阅项名称[ProfileImagePath],它们总是以路径c:\Users开头)
1.以[S-1-5-21-12]开头的都是本地用户
1.以[S-1-5-21-13]开头的用户都是以前登录到机器上的网络用户[* 如果加入到Domained网络 *]。

to94eoyn

to94eoyn4#

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

HKEY_CURRENT_USER\Volatile Environment\Username
e37o9pze

e37o9pze5#

您可以使用来自Microsoft SysInternals团队的命令PSGetSid。
下载URL:http://technet.microsoft.com/en-gb/sysinternals/bb897417.aspx
用途:

psgetsid [\\computer[,computer[,...] | @file] [-u username [-p password]]] [account|SID]
-u  Specifies optional user name for login to remote computer.
-p  Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.
Account PsGetSid will report the SID for the specified user account rather than the computer.
SID PsGetSid will report the account for the specified SID.
Computer    Direct PsGetSid to perform the command on the remote computer or computers specified. If you omit the computer name PsGetSid runs the command on the local system, and if you specify a wildcard (\\*), PsGetSid runs the command on all computers in the current domain.
@file   PsGetSid will execute the command on each of the computers listed in the file.

示例:

psgetsid S-1-5-21-583907252-682003330-839522115-63941

注意:

  • 如果用户是域/AD(LDAP)用户,则在域中的任何计算机上运行该命令应给予相同的结果。
  • 如果用户位于计算机的本地,则命令应在该计算机上运行,或者应通过可选参数指定计算机。
    更新

如果您使用PowerShell,以下内容可能有助于解析列出的任何AD用户:

#create a drive for HKEY USERS:
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue

#List all immediate subfolders
#where they're a folder (not a key)
#and they's an SID (i.e. exclude .DEFAULT and SID_Classes entries)
#return the SID
#and return the related AD entry (should one exist).
Get-ChildItem -Path 'HKU:\' `
| ?{($_.PSIsContainer -eq $true) `
-and ($_.PSChildName -match '^S-[\d-]+$')} `
| select @{N='SID';E={$_.PSChildName}} `
, @{N='Name';E={Get-ADUser $_.PSChildName | select -expand Name}}

您还可以进一步细化SID过滤器,以便仅拉回那些将解析为AD帐户的SID(如果您愿意);关于SID结构的更多信息,请参见:https://technet.microsoft.com/en-us/library/cc962011.aspx

prdp8dxp

prdp8dxp6#

HKEY_USERS\oneyouwanttoknow\中,您可以查看\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,它将显示他们的配置文件路径。c:\users\whothisis\Desktop

klr1opcd

klr1opcd7#

通过一点创造性的编程
1.在HKEY_USERS中枚举那些有趣的数字键的键...
1.枚举HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\中的键
你会发现同样的数字...现在在这些键中查看String值:ProfileImagePath ="SomeValue",其中的值为:
"%systemroot%\system32\config\systemprofile"...对这个不感兴趣因为它不是目录路径...
% SystemDrive %\Documents and Settings\LocalService-"Local Services" % SystemDrive %\Documents and Settings\NetworkService "NETWORK SERVICE"

% SystemDrive %\Documents and Settings\USER_NAME,在大多数未篡改的系统中,它直接转换为“USERNAME”值,即其中用户在几周后没有更改他们的用户名或明确更改路径……

xoefb8l8

xoefb8l88#

for /f "tokens=8 delims=\" %a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist" ^| find "UsrClass.dat"') do echo %a
gab6jxml

gab6jxml9#

正确的方法是利用SAM注册表配置单元(在Windows 10上,这需要NT AUTHORITY\SYSTEM权限)。您需要的信息在密钥中:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
每个子键都是用户名,并且每个子键中的默认值是二进制整数。此值(转换为十进制)实际上对应于SID的最后一个块。
以“Administrator”为例,默认情况下它与整数0x 1f 4(或500)相关联。
因此,理论上,您可以基于HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList键和/或HKEY_USERS键的子键名称构建一个SIDS列表,解析出最后一个连字符(-)之后的值,并将其与SAM配置单元中的信息进行比较。
如果您没有NT AUTHORITY\SYSTEM权限,那么下一个最佳方法可能是遵循此处答案中描述的其他方法。
参考:https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/81d92bba-d22b-4a8c-908a-554ab29148ab

相关问题