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