Как я могу предотвратить создание папки с помощью службы Windows?

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

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

4 ответа

Решение

К сожалению, я не знаю достаточно близко о том, как вам помочь, но я вполне уверен, что вам нужно будет либо написать, либо получить драйвер фильтра файловой системы, который может взаимодействовать с вашей службой Windows, чтобы сообщить, что кто-то попытался создать каталог / файл, чтобы ваш сервис мог принять за него решение. Таким образом, когда кто-то / что-то пытается создать недопустимый файл или папку, ему может быть возвращено "Отказано в доступе" или другая ошибка Win32 по вашему выбору.

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

Используйте FileSystemWatcher.

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

Тогда ОС сделает это без того, чтобы вы вообще писали код.

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

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

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

Другие вопросы по тегам