Поиск записей реестра Windows по разрешениям

Я недавно прошел и изменил некоторые записи в реестре, так что только у меня было право собственности и доступ. Я подозреваю, что одно или несколько изменений привели к сбою установки программного обеспечения. Программа установки указала, что не может записать определенную запись, а только идентифицирует записываемое значение, а не местоположение в реестре.

К сожалению, я ошибся, не отследив, какие из них я изменил.

Есть ли какой-нибудь способ поиска в реестре для определения записей на основе их разрешения? В моем случае я бы попытался найти записи, принадлежащие только мне.

2 ответа

Решение

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 }

Вы можете использовать Process Monitor ( https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx), чтобы записывать действия вашего неудачного установщика. Вы можете создать фильтр, который будет записывать только операции реестра, которые приводят к отказу в доступе.

Другие вопросы по тегам