Перехват события открытия файла
От: spiritpc  
Дата: 08.09.10 11:34
Оценка:
Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)? Мб есть другие предложения: необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.
Спасибо!

09.09.10 18:15: Перенесено из 'COM/DCOM/ActiveX'
Re: Перехват события открытия файла
От: spiritpc  
Дата: 09.09.10 07:10
Оценка:
Неужели никто по этому вопросу ничего не может сказать?
Мозги кипят уже, может не в том направлении копаю.
Re: Перехват события открытия файла
От: enigmas Ниоткуда  
Дата: 09.09.10 08:00
Оценка:
Здравствуйте, spiritpc, Вы писали:

S>Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)? Мб есть другие предложения: необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.

S>Спасибо!

Можно написать длл которая будет перехватывать Windows API — CreateFile (это если перехватывать открытие файла) или CreateProcess (если перехватывать запуск файла exe файл) или ShellExecute или WinExec и задавать необходимый вопрос. Эту длл можно глобальным хуком внедить во все процессы.

Если надо перехватывать открытие/запуск файла только в определеных приложениях, то в той же длл в DllMain определять необходимый процесс.
The Enigma Protector — software protection system
http://enigmaprotector.com/
Re: Перехват события открытия файла
От: Unhandled_Exception Россия  
Дата: 10.09.10 15:51
Оценка:
Здравствуйте, spiritpc, Вы писали:

S>Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)? Мб есть другие предложения: необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.

S>Спасибо!

total commander разве грузит shell extension?

ну тут имхо либо драйвера, либо хуки, либо опять хуки.
Re: Перехват события открытия файла
От: x64 Россия  
Дата: 13.09.10 16:11
Оценка:
S>Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)?

Ничего не могу сказать. Imho, нет.

S>...необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.


Писать драйвер файловый фильтр тебе, всё остальное от лукавого. Но это непростая задача, учитывая ещё взаимодействие с приложением и пр. Если сроки критичны, лучше заказать разработку на стороне.
Re: Перехват события открытия файла
От: Аноним  
Дата: 16.09.10 16:14
Оценка:
Здравствуйте, spiritpc, Вы писали:

S>Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)? Мб есть другие предложения: необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.

S>Спасибо!

Если не ошибаюсь, что-то подобное можно сделать через WMI, если подписаться на событие от __InstanceCreationEvent. Правда, не знаю, насколько это подойдет в данном случае
Re[2]: Перехват события открытия файла
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 21.09.10 23:25
Оценка: 1 (1)
S>>Можно ли перехватить событие открытия файла при помощи расширения оболочки (shell extension)? Мб есть другие предложения: необходимо перед открытием файла через windows explorer или total commander вывести диалоговое окошко с определенным вопросом.
открытия для чего? Я могу на запуск открыть в Far, а могу и F3\F4 надавить.

А>Если не ошибаюсь, что-то подобное можно сделать через WMI, если подписаться на событие от __InstanceCreationEvent. Правда, не знаю, насколько это подойдет в данном случае

с WMI связываться не рекомендую. Он элементарно может быть отключен — это для начала.
--
Отвечая на оригинальный вопрос — думаю, получится сделать желаемое для explorer (и любого поддерживающего shell namespace API приложения) — гляньте samples там рядом? Т.е. контроль действий от имени самого explorer — можем определить что показывать в shell namespace и как себя вести при запуске и при drag'n'drop операциях над IShellFolder объектами (например). Но если кто-то (в т.ч. изнутри левого плагина под explorer) позовет CreateFile, т.е. не будет работать через Shell API — уже контроля в этом варианте не случится. Нужен ли он — смотрите свое ТЗ.

Если же речь про win32 процессы типа FAR & TC т.е. задачу в более общем виде — из оболочки (своего NSE плагина) можно сделать как советуют
Автор: enigmas
Дата: 09.09.10
перечисление процессов и внедрение с перехватом нужного API внутри подопытных процессов — не самое чистое (зато чисто UM) решение, с трудностями с внедрением везде, во все и всегда (хотя без ТЗ нельзя сказать критично ли это место) + стандартными для хуков проблемами.

Более грамотное внедрение своего кода в практически все процессы (для перехвата затем нужного API) в системе потребует ядерной поддержки. А раз уходим в ядро — привет фильтрам. Так что если делать по уму — файловый (мини)фильтр спасет.
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.