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

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

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

2 ответа2

0

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 }
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .