按权限搜索 Windows 注册表项

按权限搜索 Windows 注册表项

我最近检查并更改了一些注册表项,以便只有我拥有所有权和访问权限。我怀疑一个或多个更改导致软件安装失败。安装程序指示它无法写入某个条目,但只标识了要写入的值,而不是注册表中的位置。

不幸的是我犯了一个错误,没有记录下我所改变的内容。

是否有某种方法可以搜索注册表以根据权限识别条目?就我而言,我会尝试查找仅由我拥有的条目。

答案1

PowerShell 可能有所帮助。最好至少将范围缩小到您正在使用的几个键。因为从注册表配置单元的根目录进行搜索可能会产生很多噪音,因此它不会比手动搜索注册表好多少。

这将获取所有以您的用户名设置为所有者的密钥:

Get-ChildItem HKLM:\ -Recurse -ErrorAction SilentlyContinue | ? { $_.PSIsContainer -and (Get-Acl $_.PSPath).Owner -like '*username.here*' } | % { $_.Name }

(请注意,星号是故意作为通配符使用的 --eq 'COMPUTERNAME\username'如果您确信知道确切的用户名,也可以使用)


并且,这将获取所有具有非继承权限的密钥:

Get-ChildItem HKLM:\ -Recurse -ErrorAction SilentlyContinue | ? { $_.PSIsContainer -and ((Get-Acl $_.PSPath).access | ? { ! $_.IsInherited }) } | % { $_.Name }

答案2

您可以使用进程监视器(https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx) 来记录失败安装程序的操作。您可以创建一个过滤器,仅记录导致访问被拒绝失败的注册表操作。

相关内容