如果您知道本地计算机上该用户的登录名,我想知道是否有办法在 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 回答