Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд).
Насколько мне известно, стандартными методами этого сделать нельзя.
Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.
Перехватил RegQueryValue (A и W) с помощью Detour — вызовы не происходили.
API Monitor показал что вызовы идут RegQueryValueEx но НЕ для чтения пути к временным файлам.
Перехватил RegQueryValueEx. Вызовы пошли аналогичные результатам API Monitor.
Как сделать перехват как у Process Monitor?
Или рак решить задачу другим способом?
WA>Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд). WA>Насколько мне известно, стандартными методами этого сделать нельзя.
WA>Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.
WA>Перехватил RegQueryValue (A и W) с помощью Detour — вызовы не происходили.
WA>API Monitor показал что вызовы идут RegQueryValueEx но НЕ для чтения пути к временным файлам.
WA>Перехватил RegQueryValueEx. Вызовы пошли аналогичные результатам API Monitor.
WA>Как сделать перехват как у Process Monitor? WA>Или рак решить задачу другим способом?
У ProcMon'а есть возможность отображения стека вызовов события. Там будет видно какую функцию вызывает IWebBrowser2 (вероятно сразу нативную, раз перехваты в ADVAPI32 не видят чтения).
P.S. ProcMon, как видно из того же стека вызовов, следит за реестром c использованием RegistryCallback в драйвере.
Здравствуйте, EreTIk, Вы писали:
ETI>У ProcMon'а есть возможность отображения стека вызовов события. Там будет видно какую функцию вызывает IWebBrowser2 (вероятно сразу нативную, раз перехваты в ADVAPI32 не видят чтения).
ETI>P.S. ProcMon, как видно из того же стека вызовов, следит за реестром c использованием RegistryCallback в драйвере.
Detour в состоянии перехватить NtQueryValueKey?
Почитал немного о RegistryCallback
Вроде подходит для моей задачи
Но это обязательно нужно писать драйвер или можно запихнуть в программу?
WA>Detour в состоянии перехватить NtQueryValueKey?
Думаю да. Плюс ко всему, реализация IWebBrowser2, вероятно, вызывает ntdll!NtQueryValueKey по статическому импорту и можно просто установить перехват впатчив в таблицу импорта свой обработчик (вопрос в переносимости: все ли целевые реализации IWebBrowser2 используют этот нативный вызов). С другой стороны: никто не гарантирует, что в новой ОС не появится NtQueryValueKeyEx и реализация IWebBrowser2 не будет использовать ее.
WA>Почитал немного о RegistryCallback WA>Вроде подходит для моей задачи WA>Но это обязательно нужно писать драйвер или можно запихнуть в программу?
Это интерфейс только для драйверов. IMHO, ради такой задачи самостоятельно реализовывать драйвер не стоит: время на обучение, время на реализацию, время на тестирование, покупка сертификата. Ну а в результате — ошибка в драйвере приводит к BSOD'у всей системы (или, если ошибка будет эксплуатируемой, вредоносное ПО будет таскать ваш подписанный драйвер, что бы с помощью него выполнить произвольный не подписанный код в ядре, а ваше ПО будут детектить антивирусы по драйверу).
Здравствуйте, WinAx, Вы писали:
WA>Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд). WA>Насколько мне известно, стандартными методами этого сделать нельзя.
WA>Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.
Я не очень в этой теме, но возможно поможет. Если IWebBrowser2 хранит путь к временным файлам, кукам, кешам и т.д. в реестре, то можно попробовать подсунуть экземпляру IWebBrowser2 полностью свои настройки реестра. Делается это через так.