2010-02-19 4 views
2

У меня есть пользователи и процессы на веб-сервере. Я ищу, чтобы написать службу Windows, которая способна перехватывать вызовы для создания папок в определенном подкаталоге. Я нашел несколько источников для реактивной ловушки, что была создана папка, но я хочу создать службу Windows, которая будет проактивно перехватывать и предотвращать любые неприемлемые вызовы для создания папки.Как я могу предотвратить создание папки с помощью службы Windows?

Позвольте мне предварительно опорочить «почему». Не беспокойтесь о том, почему. Достаточно сказать, что меня попросили сделать это, и я пытаюсь найти самый простой способ выполнения задачи автоматическим способом. Я уже определил, как это сделать, если я позволю создать папку, а затем просто следую за моей службой Windows и удалю ее (и ее содержимое) после факта. Мне действительно хотелось бы, чтобы я мог прослушать служение и упредить.

+0

Вы сказали «веб-сервис» в своем первом предложении ... это была опечатка? – Dancrumb

+0

Как определяется «неприемлемые вызовы для создания папки»? –

+0

@ Dancrumb: Я был. Спасибо за уловку. Я обычно работаю с веб-службами, так что мои пальцы просто попали в память. –

ответ

4

К сожалению, я не знаю, где-нибудь рядом достаточно о том, как , чтобы помочь вам, но я абсолютно уверен, что вам нужно либо написать или получить File System Filter Driver, которые могут взаимодействовать с вашими услугами окна, чтобы сказать, что это что у кого-то есть , попробовал, чтобы создать каталог/файл, чтобы ваш сервис мог принять решение об этом. Таким образом, когда кто-то/что-то пытается создать файл или папку, которые не разрешены, они могут быть возвращены «Доступ запрещен» или другая ошибка Win32 по вашему выбору.

Если вы сделали идти по пути использования драйвера, я предполагаю, что это все равно лучше сделать тяжелый подъем принятия решения, если создание/изменение в службе, то есть за пределами режима ядра.

+1

@ Rob: Мне это не нравится. Это выглядит несправедливым. Чем меньше мне это нравится, тем больше вероятность, что это лучший метод. –

+0

Да, несправедливо. Также должно быть интересно попытаться его оценить. – JeffH

+0

@Joel, этот комментарий QOTD достойный! ;) – Rob

0

Не уверен, что вы найдете точку перехвата «precreate file». Если бы я был вами, я бы отбросил назад и просто заблокировал настройки безопасности в вашей папке. Если это действительно одна папка, и вы работаете в Windows, вы можете настроить защиту, чтобы все пользователи не могли создавать папки в этом каталоге. Просто убедитесь, что это то, что вы хотите сделать.

Тогда ОС сделает это без вашего написания кода вообще.

Возможно, есть какой-либо вызов в пути безопасности, в который вы можете ввести этот код, если вам действительно нужно написать его сами по какой-либо причине.

+0

@NO Возвраты: я думал об этом, но я не хочу отключать все творения, только творения, которые не соответствуют критериям бизнес-правил, определяемым механизмом правил (который я не контролирую). –

+0

Я думал, что, возможно, в журнале событий появятся сбои. (Похоже, они по крайней мере не по умолчанию.) Если это так, вы можете заблокировать их с помощью контроля доступа, следить за журналом за неудачные попытки, а затем ваша служба может создать только те каталоги, которые вы хотите разрешить. Ну что ж. – JeffH

0

Использовать FileSystemWatcher.

+0

@ Rune: Мне нравится эта ссылка. Очень информативный, но он по-прежнему реактивный. У меня не было бы реального способа выбросить исключение UnauthorizedAccessException на попытку. Это по-прежнему будет «очищать». Хотя, это выглядит лучше, чем моя оригинальная идея, поэтому, если я в конечном итоге пойду по этому маршруту, я определенно буду использовать это. –

+0

FileSystemWatcher должен иметь событие «Создание» для OP, чтобы использовать его так, как он просит. Когда срабатывает событие «Создано», им слишком поздно. – JeffH

0

Как ваши пользователи создают новые папки? Есть ли установленный путь (IE: правый клик, Новая> Папка), или они делают это, однако пользовательский интерфейс Explorer позволяет? Я спрашиваю, потому что идея заключалась бы в создании надстройки для функции правого клика (аналогично WinRar), которая предназначена для создания новой папки с указанными параметрами.

Это будет работать, только если все они используют тот же самый метод для создания новой папки. Нет необходимости в службе Windows.

+0

@rockinthesixstring: меня попросили убедиться, что даже автоматические службы (такие как IIS, другие службы Windows с более низким приоритетом) не должны создавать папки. Это может быть через проводник, через управляемый код, неуправляемый код, FTP. Возможно, даже больше. –

+0

Звучит как вызов. Я не могу придумать способ перехватить, только следовать. Если создается недопустимая папка, удаляется и генерируется всплывающее уведомление. хотя раньше я был не прав. –

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