Существует такая проблема: сделать системный диск read-only для процессов, работающих под определённым user'ом. Скажем некто логинится как обычно и получает стандартный доступ. Мой процесс (и его под-процессы, что самое важное) запускается в контексте другого user'а на том же десктопе. Но он/они не должен иметь возможности писать на системный диск.
Типичное решение: DefineDosDevice системному диску под этим user'ом не работает — на то он и системный диск.
Корявое решение которое есть на данный момент: мой процесс посылает сигнал сервису на старте,тот делает DefineDosDevice(DDD_REMOVE_DEFINITION, ... системному диску (!), затем мой процесс делает DefineDosDevice() тому же диску под user'ом (но как виртуальную network share на этот же диск в read-only режиме), затем сервис восстанавливает определение системного диска под SYSTEM. То есть получается, что на мгновение система оказывается без системного диска, что может приводить к несвойственным проблемам.
Вопрос: может кто сможет предложить лучшее решение, при котором мой процесс получил бы то же самое? Filter driver?
Способ установки ACL/DACL не годиться, так как не даёт гарантии по разным причинам.
Надеюсь, кто-нибудь поймёт о чём я... Заранее благодарен!
V>сделать системный диск read-only для процессов, работающих под определённым user'ом.
Драйвер-фильтр файловой системы решит твою проблему, но не понятно, почему ACL не подходит.
V>Способ установки ACL/DACL ... не даёт гарантии по разным причинам.
Здравствуйте, x64, Вы писали:
V>>сделать системный диск read-only для процессов, работающих под определённым user'ом.
x64>Драйвер-фильтр файловой системы решит твою проблему, но не понятно, почему ACL не подходит.
V>>Способ установки ACL/DACL ... не даёт гарантии по разным причинам.
x64>Конкретнее.
Стандартный ACL не подходит поскольку его (для меня) сложно отслеживать и контроллировать. Даже если ставится он на директорию выше, в папке профиля этого самого виртуального usera есть много под-настроек и своих ACL на директории и файлы. К тому-же, Windows их сам подправляет динамически. Нет 100% гарантии что где-нибудь лазейка и найдётся.
А можно поподробнее о драйвер-фильтре файловой системы? Примеры есть? И опять-же, он должен контроллировать только одного usera...
V>К тому-же, Windows их сам подправляет динамически.
А, кстати, да, что-то такое было вроде, особенно начиная с Vista и выше.
V>Нет 100% гарантии что где-нибудь лазейка и найдётся.
Ну если всё так серьёзно, то, пожалуй, да, лучше один раз написать (мини-)фильтр и не парится в будущем.
V>А можно поподробнее о драйвер-фильтре файловой системы?
Примеры legacy-фильтров есть во всех WDK (не путать с DDK) вплоть до WDK 7.0. Начиная с WDK 7.1 остались только сэмплы минифильтров.
V>И опять-же, он должен контроллировать только одного usera...
С определением пользователя в файловых фильтрах проблем нет.