Когда вы дважды щелкаете по файлу, вы просите проводника принять решение от вашего имени. Explorer делает это, изучая расширение файла, просматривая приложение, связанное с этим расширением, и запускает его с инструкциями по открытию файла.
Загрузчик Windows несет ответственность за загрузку приложения в память и настройку его работы. Для этого он должен открыть хотя бы исполняемый файл и обычно одну или несколько библиотек DLL. Как только приложение запустится, оно также может открыть некоторые файлы конфигурации, прежде чем он откроет файл, который попросил пользователь.
Все эти открытые операции выполняются в том же контексте. Ядро знает, какой процесс инициировал открытие файла, но он не имеет возможности сказать, был ли он открыт загрузчиком Windows или самим приложением, или чтобы различать файл конфигурации и файл, который пользователь дважды нажал. Таким образом, вы не сможете обнаруживать открытые пользователем операции открытия файла из драйвера фильтра файловой системы.
Возможно, вместо этого можно использовать расширение проводника Windows, хотя это будет работать только для файлов, открытых с помощью проводника или одного из стандартных диалогов, то есть для большинства, но не для всех приложений.
Я приведу пример, чтобы лучше объяснить себя: Предположим, я открываю файл abc.txt. Вызовы пользовательского режима: Откройте кучу dll, откройте блокнот, откройте abc.txt. Я хочу отфильтровать это и поймать только файл abc.txt (или что-нибудь еще, что пользователь открыл acutaly). Как поймать только то, что пользователь (человек) открыт? Как двойной клик и Enter) – user3449011
@ user3449011: вы не можете. Windows только знает, что программа открывает файл, и нет способа определить, открывает ли он файл, потому что пользователь явно спросил его или по какой-то другой причине. –
@HarryJohnston - действительно попытка выполнить попытку, найденную пользователем или в режиме ядра, была запрошена. и он не может понять, что есть - 'FLT_CALLBACK_DATA.RequestorMode' - начать с http://stackoverflow.com/questions/41292697/minispy-driver-user-mode-call – RbMm