Поймать запрос реестра C ++ - PullRequest
2 голосов
/ 25 марта 2011

Мне известны такие инструменты http://portableapps.com/development/projects/registry_rapper

RegRap.exe может получить через param другой файл .exe и перехватить запросы в реестре и сохранить его в .ini

Это хорошо, но яМне нужен сниппт-код, чтобы установить такой хандлер внутри моей программы на C ++, и для заданного Reg KEY вернуть мое значение ...

RegRap.exe, написанный со скриптами NSIS, поэтому для меня это не полезно: (

Но может быть кто-то знает другой проект только с c ++?

Спасибо, и простите за мой плохой английский.

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Если вы хотите отслеживать доступ к реестру в ВАШЕЙ программе, вы можете # определить функции API реестра, вместо этого предоставить свои хуки и отслеживать их в своих хуках.

//in your stdafx.h, or some other universally included file
#define RegCreateKeyEx MyRegCreateKeyEx


//somewhere else
#undef RegCreateKeyEx

LONG WINAPI MyRegCreateKeyEx(stuff...)
{
  //Track
  //Call the real RegCreateKeyEx
}

Это, вероятно, самый простой способподключить API.Не будет работать, если вы хотите отслеживать использование реестра вашей программой, но вне вашего кода (то есть в библиотеках или DLL).Тогда нужно использовать более продвинутые методы.

Также рассмотрим Process Monitor Марка Руссиновича: http://technet.microsoft.com/en-us/sysinternals/bb896645

Это не программный хук, а потрясающий инструмент, поэтому его стоит подключить.Он контролирует доступ к реестру по вашим процессам, а затем по некоторым.

0 голосов
/ 25 марта 2011

Если вы хотите использовать чистый C ++, посмотрите библиотеки EasyHook и Detours .Оба предназначены для такого рода перехватов на уровне функций.EasyHook работает в C ++ и C #, 32 и 64-разрядных, тогда как Detours несколько устарел и только для 32-разрядных C ++ (даже запуск на 64-разрядных ОС может привести к сбою вашей программы).установите хук в целевом процессе, либо загрузив код в виде DLL, либо создав процесс (приостановленный), установив хуки и запустив его.

В EasyHook это выглядит примерно так:*

Вы также можете перехватывать функции, которые ваша библиотека не связана с использованием Windows API для получения адреса.

0 голосов
/ 25 марта 2011

В этом сообщении говорится, что для реестра нет хуков, и вы можете только долго опрашивать. Простой способ перехвата доступа к реестру для определенного процесса

...