Существует такая проблема: сделать системный диск read-only для процессов, работающих под определённым user'ом. Скажем некто логинится как обычно и получает стандартный доступ. Мой процесс (и его под-процессы, что самое важное) запускается в контексте другого user'а на том же десктопе. Но он/они не должен иметь возможности писать на системный диск.
Типичное решение: DefineDosDevice системному диску под этим user'ом не работает — на то он и системный диск.
Корявое решение которое есть на данный момент: мой процесс посылает сигнал сервису на старте,тот делает DefineDosDevice(DDD_REMOVE_DEFINITION, ... системному диску (!), затем мой процесс делает DefineDosDevice() тому же диску под user'ом (но как виртуальную network share на этот же диск в read-only режиме), затем сервис восстанавливает определение системного диска под SYSTEM. То есть получается, что на мгновение система оказывается без системного диска, что может приводить к несвойственным проблемам.
Вопрос: может кто сможет предложить лучшее решение, при котором мой процесс получил бы то же самое? Filter driver?
Способ установки ACL/DACL не годиться, так как не даёт гарантии по разным причинам.
Надеюсь, кто-нибудь поймёт о чём я... Заранее благодарен!