Я кодировал мини-фильтр, который блокирует все изображения JPG с относительным успехом.
За исключением случаев, когда файл открывается в «Фото Windows». Мини-фильтр зарегистрирован для всех MJ_CREATE, и в WinDbg я вижу, что мой код вызывается для блокировки изображений JPG при открытии Windows Photos. Тем не менее, изображение все еще загружается успешно.
PostOperatonCallback:
if (RtlCompareUnicodeString(&fileDetails->Extension, &jpgExt, TRUE) == 0)
{
DbgPrint("Blocking JPG file...\n");
FltCancelFileOpen(FltObjects->Instance, FltObjects->FileObject);
Data->IoStatus.Status = STATUS_ACCESS_DENIED;
Data->IoStatus.Information = 0;
FltReleaseFileNameInformation(fileDetails);
return FLT_POSTOP_FINISHED_PROCESSING;
}
Параметры запуска фильтра:
StartType = 0
Class = "ActivityMonitor"Altitude= "370030"
Среда тестирования:
Изображения копируются до загрузки фильтра. Фильтр устанавливается, после чего система перезагружается.
Проблема:
Изображения по-прежнему могут быть доступны для Windows Photos после перезагрузки системы. (Фильтр загружается при запуске, поэтому технически изображения должны быть заблокированы после перезагрузки).
Все остальные операции успешно заблокированы, например, (Копировать, Вставить, Открытие с другой программой, как краска). Любые новые образы JPG, которые пытаются открыть или передать после загрузки, также успешно блокируются.
Мне интересно, что мне не хватает? Некоторые изображения загружаются так рано, что обходит FilterManager? Есть ли IRP, который я могу пропустить? Моя конечная цель на данный момент — просто заблокировать загрузку всех JPG (если возможно, включая миниатюру).
Огромное спасибо всем, кто нашел время, чтобы прочитать мой вопрос, и всем, кто может помочь.
Ура,
Брайс Вудс
На самом деле оказалось, что Windows 10 кэширует изображения и их миниатюры и сохраняет их в файлах ‘.db’. Я начал блокировать эти файлы, и это решило мою проблему!
Других решений пока нет …