Интересно, есть ли способ найти локальный раздел реестра пользователя в HKEY_USERS, если вы знаете имя пользователя этого пользователя на локальном компьютере. Я хочу программно добавить материал к определенным разделам реестра пользователей (например, Autorun), но я знаю только имя пользователя. Как определить, какой из загадочных пользователей в HKEY_USERS действительно принадлежит определенному имени пользователя?
Как я могу программно найти раздел реестра HKEY_USERS для пользователей с помощью powershell?
Ответ 1
$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}"
Ответ 2
Этот ответ не является полным, так как 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()
Ответ 3
Это делает это для меня
ls 'hklm:software/microsoft/windows nt/currentversion/profilelist' | ? {
$_.getvalue('profileimagepath') -match 'Steven'
} | % pschildname