2015-07-31 2 views
1

Мне нужно отслеживать изменения реестра на машине Windows. Можно ли использовать RegistryCallback из службы окон пользовательского режима, а не из драйвера Windows? Большинство примеров используются в драйвере.Могу ли я использовать RegistryCallback в пользовательском режиме приложения

ответ

3

AFAIK no, потому что он зарегистрирован через CmRegisterCallback() и CmRegisterCallbackEx(), которые могут быть вызваны только в драйверах режима ядра.

Процессы пользовательского режима могут использовать RegNotifyChangeKeyValue(), но он не сообщает подробную информацию о любых изменениях, внесенных в реестр.

SysInternals Process Monitor использует драйвер режима ядра для отслеживания подробных действий реестра для отображения в режиме просмотра пользовательского режима.

+0

Но мне нужно знать подробную информацию о любых изменениях реестра, есть ли другой способ в пользовательском режиме? Http: //stackoverflow.com/questions/16820641/registrycallback-and-regcreatekeyex – JennyS

+0

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

+0

http://forum.sysinternals.com/regmon-sourcecode_topic20980.html отметил, что «фильтр реестра Process Monitor использует перехватчики SSDT», нужно ли также перехватывать SSDT в драйвере режима ядра? – JennyS

Смежные вопросы