web-dev-qa-db-ja.com

HKEY_USERS値からユーザー名を取得する

HKEY_USERSの下の値を実際のユーザー名に接続する方法はありますか?

39
modz0r

次のキーのいずれかを見ると:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

SIDのリストには、ユーザー名を含む「ホームパス」の場所など、さまざまな値が記載されています。

私はこれがどれほど信頼できるかわかりません。あなたが何をしているのか本当に確信がない限り、これをいじることはお勧めしません。

61
Hans Olsson

[〜#〜] wmi [〜#〜] からこの情報を照会できます。次のコマンドは、各ユーザーの行と各ユーザーのSIDを含むテーブルを出力します。

wmic useraccount get name,sid

この情報をCSVにエクスポートすることもできます。

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

Vistaおよび7でこれを使用しました。詳細については、「 WMIC-WMIのコマンドライン制御を取得 」を参照してください。

25
dcharles
  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]で始まるのは、マシンに以前にログオンしたすべてのネットワークユーザー[ドメインネットワークに参加している場合]です。

12
Stone

レジストリでユーザーIDを検索すると、

HKEY_CURRENT_USER\Volatile Environment\Username
4
Alan Frank

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

3
JohnLBevan

の中に HKEY_USERS\oneyouwanttoknow\を見ることができます\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Foldersそしてそれは彼らのプロファイルパスを明らかにします。 c:\users\whothisis\Desktopなど.

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

少し創造的なプログラミングを行って、

  1. これらの面白い数字キーのHKEY_USERSのキーを列挙します...

  2. 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」値に直接変換します。ユーザーが数週間後にユーザー名を変更していないか、パスを明示的に変更していない場合...

0
spadge