запустить exe при доступе к папке - PullRequest
0 голосов
/ 01 марта 2010

У меня есть папка общего доступа, которой я хочу предоставить права доступа нескольким людям только в определенное время. Т.е. в то время как они пытаются получить доступ к папке, я должен иметь возможность разрешить или запретить на основе моего желания. Короче говоря, это контроль доступа во время выполнения, а не статический контроль доступа уже присутствует в окнах. Есть ли положение, чтобы подключить exe как таковой? Я предпочитаю делать это в C # .net

Ответы [ 4 ]

1 голос
/ 01 марта 2010

Таким образом, чтобы выполнить такую ​​задачу, я бы использовал ACL из NTFS. Да, он «жестко закодирован» и не может быть изменен, пока кто-то обращается к файлу. Но вы можете написать службу Windows, которая будет динамически изменять ACL в зависимости от того, что вам нравится.

Итак, напишите программу, которая изменяет ACL, а Windows делает все остальное. Некоторые примеры выполнения такой задачи в C # можно найти в небольшом поиске Google:

Обновление

Для предоставления или отклонения разрешения вам необходим набор правил. Эти правила могут быть проверены в вашем приложении, и это устанавливает разрешения NTFS. Чего не хватает?

Может быть, у вас нет такого простого способа получить событие о том, что «пользователь обращается к файлу / папке foo, что мне делать?». Но вы можете генерировать каждую секунду (если хотите) или в зависимости от события (файл / папка созданы, скопированы, удалены, переименованы; достигнута конкретная дата / время) новый набор правил и просто записать его в ACL. Закончено.

Обновление (снова)

@ Равиша: Но когда вы знаете правила, если вы предоставляете или запрещаете доступ? Эти правила определены заранее.

Вы говорите, что пользователь X имеет доступ только с 8:00 до 15:00 или только если файл y существует (или что-то особенное записано в файл y). Для всех этих правил вы должны написать программу, и эта программа не оценивает правила, если вы получили событие «x пытается получить доступ к y». Вместо этого вы проверяете правила на регулярной основе (например, раз в минуту) или какое-либо другое событие (файл rules.config был изменен). А затем вы изменяете разрешения NTFS в соответствии со своими правилами.

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

0 голосов
/ 02 марта 2010

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

Почему бы не поместить все ваши документы в какой-то файл с расширением, которым вы управляете. Если дважды щелкнуть файл, интерфейс winzip / explorer / ... предоставит доступ к файлам в кабинете, но только при желании.

0 голосов
/ 01 марта 2010

Вы, вероятно, можете включить файл autorun.inf, который будет запускать ваше приложение при открытии папки и закрытии окна обозревателя / переходе вверх, когда кому-то не позволено войти. Подробнее смотрите Здесь

0 голосов
/ 01 марта 2010

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

Кроме того, в Windows нет функции «ловушки», позволяющей разрешить или запретить доступ к папке, запустив программу при попытке доступа.

...