Получение пути реестра с использованием NtQueryObject - PullRequest
1 голос
/ 21 августа 2011

Мне нужно получить путь к реестру по его дескриптору во время выполнения. Для этого я использую функцию NtQueryObject. Моя проблема в том, что NtQueryObject дает мне путь в странном формате (см. Изображение ниже).

enter image description here

Полагаю, это тот формат, который вам нужно использовать при написании драйверов, но я хочу преобразовать этот путь в стандартный reg-путь, такой как

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run". 

В настоящее время я заменяю

 \REGISTRY\MACHINE\etc

с

HKEY_LOCAL_MACHINE \ и т.д.

но этот ключ Wow6432Node является проблемой. Я предполагаю, что это имя будет отличаться на разных машинах, даже в 32-битных окнах такого ключа не было. Итак, мой вопрос, есть ли какой-нибудь стандартный способ сделать reg path преобразованием (возможно, это делает какой-нибудь win api)?

1 Ответ

2 голосов
/ 22 августа 2011

Wow6432Node действительно является частью пути реестра к этому конкретному ключу, хотя он скрыт от 32-битных процессов. Если вы посмотрите в программном ключе с Regedit, вы найдете Wow6432Node.

В 64-разрядных системах оба существуют HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run и HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run. В зависимости от того, что вы пытаетесь сделать, вам может потребоваться работать с ними обоими или только с одним.

Здесь описаны ключи реестра, на которые влияет WOW64:

http://msdn.microsoft.com/en-us/library/aa384253%28v=VS.85%29.aspx

Вы можете получить явный доступ к 32-битному или 64-битному представлению реестра, как описано здесь:

http://msdn.microsoft.com/en-us/library/aa384129%28v=VS.85%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...