コンピュータに保存されているすべてのユーザー プロファイルのユーザー名とドメインを取得するにはどうすればよいですか?
これは、私が何を意味するかを説明するためのユーザー プロファイル マネージャーのスクリーンショットです。
コンピュータに保存されているすべてのユーザー プロファイルのユーザー名とドメインを取得するにはどうすればよいですか?
これは、私が何を意味するかを説明するためのユーザー プロファイル マネージャーのスクリーンショットです。
プロファイルは SID によってマップされます。マッピングは、次のレジストリ キーに保存されます。
[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]
WMI を使用して SIDを列挙し、それらをユーザーとドメイン名に解決できます。
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