如何获取所有本地存储的用户配置文件的用户名和域?

2024-02-12

如何检索计算机上存储的所有用户配置文件的用户名和域?

这是用户配置文件管理器的屏幕截图来说明我的意思:


配置文件由 SID 映射。该映射存储在以下注册表项中:

[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]

您可以使用 WMI枚举 http://msdn.microsoft.com/en-us/library/aa390387SID 和resolve http://msdn.microsoft.com/en-us/library/aa394450他们到用户和域名:

Const HKLM = &h80000002
Const profiles = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"

Set wmi = GetObject("winmgmts://./root/cimv2")
Set reg = GetObject("winmgmts://./root/default:StdRegProv")

reg.EnumKey HKLM, profiles, subkeys
For Each sid In subkeys
  Set acct = wmi.Get("Win32_SID.SID='" & sid & "'")
  WScript.Echo acct.ReferencedDomainName & "\" & acct.AccountName
Next

如果您仅查找现有配置文件文件夹的用户/域,请检查是否ProfileImagePath子项内的值指向现有文件夹:

Const HKLM = &h80000002
Const profiles = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"

Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set wmi = GetObject("winmgmts://./root/cimv2")
Set reg = GetObject("winmgmts://./root/default:StdRegProv")

reg.EnumKey HKLM, profiles, subkeys
For Each sid In subkeys
  reg.GetStringValue HKLM, profiles & "\" & sid, "ProfileImagePath", path
  path = sh.ExpandEnvironmentStrings(path)
  If fso.FolderExists(path) Then
    Set acct = wmi.Get("Win32_SID.SID='" & sid & "'")
    WScript.Echo acct.ReferencedDomainName & "\" & acct.AccountName
  End If
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取所有本地存储的用户配置文件的用户名和域? 的相关文章

随机推荐