HKEY_USERSの下の値を実際のユーザー名に接続する方法はありますか?
。
次のキーのいずれかを見ると:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
SIDのリストには、ユーザー名を含む「ホームパス」の場所など、さまざまな値が記載されています。
私はこれがどれほど信頼できるかわかりません。あなたが何をしているのか本当に確信がない限り、これをいじることはお勧めしません。
[〜#〜] wmi [〜#〜] からこの情報を照会できます。次のコマンドは、各ユーザーの行と各ユーザーのSIDを含むテーブルを出力します。
wmic useraccount get name,sid
この情報をCSVにエクスポートすることもできます。
wmic useraccount get name,sid /format:csv > output.csv
Vistaおよび7でこれを使用しました。詳細については、「 WMIC-WMIのコマンドライン制御を取得 」を参照してください。
Reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \を開きます
すべてのサブキーを取得するループを作成します
関心のあるサブキーは[S-1-5-21-]で始まるものです。これはユーザーを意味します(キー名[ProfileImagePath]を参照してください。これらは常にパスc:\ Usersで始まります)
[S-1-5-21-12]で始まるものはすべてローカルユーザーです
[S-1-5-21-13]で始まるのは、マシンに以前にログオンしたすべてのネットワークユーザー[ドメインネットワークに参加している場合]です。
レジストリでユーザーIDを検索すると、
HKEY_CURRENT_USER\Volatile Environment\Username
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
注意:
更新
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
の中に HKEY_USERS\oneyouwanttoknow\
を見ることができます\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
そしてそれは彼らのプロファイルパスを明らかにします。 c:\users\whothisis\Desktop
など.
for /f "tokens=8 delims=\" %a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist" ^| find "UsrClass.dat"') do echo %a
少し創造的なプログラミングを行って、
これらの面白い数字キーのHKEY_USERSのキーを列挙します...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \のキーを列挙します
同じ番号が見つかります。..これらのキーで文字列値を確認します。ProfileImagePath= "SomeValue"ここで、値は次のいずれかです。
"%systemroot%\ system32\config\systemprofile" ...これには興味がありません...ディレクトリパスではないため...
%SystemDrive%\ Documents and Settings\LocalService-"ローカルサービス"%SystemDrive%\ Documents and Settings\NetworkService "ネットワークサービス"
または
%SystemDrive%\ Documents and Settings\USER_NAME。これは、ほとんどの改ざんされていないシステムの「USERNAME」値に直接変換します。ユーザーが数週間後にユーザー名を変更していないか、パスを明示的に変更していない場合...