18

ローカル マシン上のそのユーザーのログイン名がわかっている場合、HKEY_USERS でローカル ユーザーのレジストリ キーを見つける方法はあるのでしょうか。プログラムで特定のユーザーのレジストリ キー (Autorun など) に何かを追加したいのですが、ユーザー名しか知りません。HKEY_USERS 内の暗号化されたユーザーのうち、実際に特定のユーザー名に属しているユーザーを特定するにはどうすればよいですか?

4

3 に答える 3

27
$User = New-Object System.Security.Principal.NTAccount($env:UserName)
$sid = $User.Translate([System.Security.Principal.SecurityIdentifier]).value

上記のスニペットは、ログインしているユーザーのSIDを示しています。これをHKEY_USERSに追加すると、そのユーザー名の正しいパスが提供されます。

New-PSDrive HKU Registry HKEY_USERS
Get-Item "HKU:\${sid}"
于 2012-06-06T06:07:18.117 に答える
7

HKEY_USERS にはすべてのユーザーが含まれているわけではなく、現在アクティブなユーザーのみが含まれているため、この回答は完全ではありません。

使用するユーザーのレジストリ ハイブをロードする必要があります。

reg load hku\ThatUserName C:\Users\ThatUserName\NTUSER.DAT

すべてのユーザーのレジストリ ハイブをロードする方法の例については、この SO の回答を参照してください。

その後、そのユーザーのレジストリにアクセスできます

Set-Location HKU:\ThatUserName

または、次のように New-PSDrive を呼び出して、ユーザーのレジストリに独自のドライブを指定します。

New-PSDrive -Name HKThatUser -PSProvider Registry -Root HKU\ThatUserName 
Set-Location HKThatUser:

必ずレジストリをアンロードし、ガベージ コレクションを実行して、完了時にハイブが確実に解放されるようにします。

reg unload hku\ThatUserName
[gc]::collect()

詳細については、この投稿を参照してください

于 2013-10-29T23:01:31.820 に答える
3

これは私のためにそれを行います

ls 'hklm:software/microsoft/windows nt/currentversion/profilelist' | ? {
  $_.getvalue('profileimagepath') -match 'Steven'
} | % pschildname

于 2014-08-19T12:07:45.787 に答える