Запретить удаление файлов пользователям но не навредить программам
От: AlexanderDz  
Дата: 06.10.14 14:48
Оценка:
Привет!

Ну уверен что пишу в правильный форум, но тем не менее.

Пишем группу продуктов на Delphi, C++/MFC, VB6 для некоторой консервативной индустрии. В связи с правилами в этой индустрии, пользователям запрещено удалять файлы. (Там есть исключения, но это отдельная история). Когда программы и пользователи работали под Windows XP, нам удалось найти набор allow & deny rights на удаление, создание, модификацию файлов, так что стандартными средствами (Windows Explorer) файлы удаляться не могут, а наши программы создают и обновляют файлы без проблем. Теперь, когда начался массированный переход на Windows 7/8 оказалось что тот найденный набор allow & deny rights больше не работает.

Для тех кто не знает, обычная программа на Delphi и MFC пишет приблизительно так: если пользователь сказал сохранить данные в новый файл c:\xyz\a.abc, то программа создает "временный" файл c:\xyz\a.$$$, производит сохранение данных, и, наконец, если запись завершилась успешно, переименовывает a.$$$ в a.abc. В случае перезаписи файла a.abc после модификации данных, уже существующий файл a.abc удаляется, а "временный" файл a.$$$ переименовывается в a.abc.

(Кстати, стандартный notepad из Windows тоже работает приблизительно так-же)

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

Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.

Александр
windows xp windows 7 windows 8 file system access rights deny rights
Re: Запретить удаление файлов пользователям но не навредить
От: Tourist Россия  
Дата: 06.10.14 15:30
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.


Извините, не уловил задачу. У вас задача, запредить удалять файлы из вашей программы? или ваша программа не может сохранить файл так как под правами юзер, под которым она запущена, запрещенные удаление файлов?
Отредактировано 06.10.2014 15:36 AndrewVK . Предыдущая версия .
Re[2]: Запретить удаление файлов пользователям но не навредить
От: AlexanderDz  
Дата: 06.10.14 15:42
Оценка:
Здравствуйте, Tourist, Вы писали:

T>Здравствуйте, AlexanderDz, Вы писали:


AD>>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.


T>Извините, не уловил задачу. У вас задача, запредить удалять файлы из вашей программы? или ваша программа не может сохранить файл так как под правами юзер, под которым она запущена, запрещенные удаление файлов?


А разве можно запретить программе удалять файлы? Никогда про это не слышал. Я думал что это только пользователям или группам.

Да, мои программы ломаются потому что у пользователя который их выполняет, нет прав на удаление файлов.

Кстати, конечно мои пользователи *не* являются членами группы администраторов.
Re: Filter driver
От: bazis1 Канада  
Дата: 06.10.14 18:38
Оценка: 1 (1)
Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.
Re: Запретить удаление файлов пользователям но не навредить
От: Буравчик Россия  
Дата: 06.10.14 20:28
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Для тех кто не знает, обычная программа на Delphi и MFC пишет приблизительно так: если пользователь сказал сохранить данные в новый файл c:\xyz\a.abc, то программа создает "временный" файл c:\xyz\a.$$$, производит сохранение данных, и, наконец, если запись завершилась успешно, переименовывает a.$$$ в a.abc. В случае перезаписи файла a.abc после модификации данных, уже существующий файл a.abc удаляется, а "временный" файл a.$$$ переименовывается в a.abc.


1. Создавать временный файл в специально отведенном для этого месте в системе, т.е. в Temporary folder? Папка для временных файлов должна (by design) позволять удалять файлы из нее. Вместо переименования a.$$$ в a.abc, просто переписывать содержимое a.$$$ в a.abc (т.е. файл a.abc не удалять)

2. Ну или программу пускать от имени другого пользователя, который имеет права на удаление файлов из нужных программе директорий.

P.S. Мне, правда, не нравится ни тот, ни другой вариант
Best regards, Буравчик
Отредактировано 06.10.2014 20:35 Буравчик . Предыдущая версия .
Re[2]: Filter driver
От: AlexanderDz  
Дата: 07.10.14 09:48
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.


Замечательная идея! Спасибо за совет!

Правда есть проблема с записью файлов на сетевой диск. Это означает что на всех компьютерах с которых доступен сетевой диск/каталог, должен быть установлен этот драйвер. Если на компьютере нет этого драйвера, то можно все и драйвер от этого не защитит — его-же просто нет. Но, надеюсь, тогда сетевые администраторы согласятся предоставить доступ к сетевому каталогу только с компьютеров с драйверами.

Этого всего не надо будет если драйвер работающий на файл сервере получит информацию о программе которая будет выполнять файловую операцию. Это возможно? Что-то мне слабо верится.
Re: Запретить удаление файлов пользователям но не навредить программам
От: s_aa Россия  
Дата: 07.10.14 09:55
Оценка:
AD>Для тех кто не знает, обычная программа на Delphi и MFC пишет приблизительно так: если пользователь сказал сохранить данные в новый файл c:\xyz\a.abc, то программа создает "временный" файл c:\xyz\a.$$$, производит сохранение данных, и, наконец, если запись завершилась успешно, переименовывает a.$$$ в a.abc. В случае перезаписи файла a.abc после модификации данных, уже существующий файл a.abc удаляется, а "временный" файл a.$$$ переименовывается в a.abc.

В %TEMP% писать временные файлы. Или и оттуда нельзя удалять?
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Re[2]: Запретить удаление файлов пользователям но не навредить
От: AlexanderDz  
Дата: 07.10.14 09:59
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, AlexanderDz, Вы писали:


AD>>Для тех кто не знает, обычная программа на Delphi и MFC пишет приблизительно так: если пользователь сказал сохранить данные в новый файл c:\xyz\a.abc, то программа создает "временный" файл c:\xyz\a.$$$, производит сохранение данных, и, наконец, если запись завершилась успешно, переименовывает a.$$$ в a.abc. В случае перезаписи файла a.abc после модификации данных, уже существующий файл a.abc удаляется, а "временный" файл a.$$$ переименовывается в a.abc.


Б>1. Создавать временный файл в специально отведенном для этого месте в системе, т.е. в Temporary folder? Папка для временных файлов должна (by design) позволять удалять файлы из нее. Вместо переименования a.$$$ в a.abc, просто переписывать содержимое a.$$$ в a.abc (т.е. файл a.abc не удалять)


Б>2. Ну или программу пускать от имени другого пользователя, который имеет права на удаление файлов из нужных программе директорий.


Б>P.S. Мне, правда, не нравится ни тот, ни другой вариант


Вариант 1 мне не нравится потому что надо изменять все программы. Так-же будет головная боль со списком последних использованных файлов. Решаемо, но не хочется. Еще проблема — файлы могут быть большими. Их перезапись может быть дорогой операцией.

Вариант 2 не подходит абсолютно так как стандартный диалог FileOpen есть не что иное как модифицированный Windows Explorer, который позволяет переименование и удаление.

Я думал использовать The COM Elevation Moniker но там тоже придется модифицировать программы — перенести процедуры записи файлов в Com object работающий с другими правами. Там еще будет головная боль что-бы создать группу с правами. Но, это решаемо.
Re[2]: Запретить удаление файлов пользователям но не навредить программам
От: AlexanderDz  
Дата: 07.10.14 10:01
Оценка:
Здравствуйте, s_aa, Вы писали:

AD>>Для тех кто не знает, обычная программа на Delphi и MFC пишет приблизительно так: если пользователь сказал сохранить данные в новый файл c:\xyz\a.abc, то программа создает "временный" файл c:\xyz\a.$$$, производит сохранение данных, и, наконец, если запись завершилась успешно, переименовывает a.$$$ в a.abc. В случае перезаписи файла a.abc после модификации данных, уже существующий файл a.abc удаляется, а "временный" файл a.$$$ переименовывается в a.abc.


_>В %TEMP% писать временные файлы. Или и оттуда нельзя удалять?


Только что написал ответ почему этот вариант не нравится http://rsdn.ru/forum/design/5810253.1
Автор: AlexanderDz
Дата: 07.10.14
Re[3]: Filter driver
От: bazis1 Канада  
Дата: 07.10.14 19:09
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Здравствуйте, bazis1, Вы писали:


B>>Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.


AD>Замечательная идея! Спасибо за совет!


AD>Правда есть проблема с записью файлов на сетевой диск. Это означает что на всех компьютерах с которых доступен сетевой диск/каталог, должен быть установлен этот драйвер. Если на компьютере нет этого драйвера, то можно все и драйвер от этого не защитит — его-же просто нет. Но, надеюсь, тогда сетевые администраторы согласятся предоставить доступ к сетевому каталогу только с компьютеров с драйверами.


AD>Этого всего не надо будет если драйвер работающий на файл сервере получит информацию о программе которая будет выполнять файловую операцию. Это возможно? Что-то мне слабо верится.

А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.
Re[4]: Filter driver
От: AlexanderDz  
Дата: 07.10.14 20:06
Оценка:
Здравствуйте, bazis1, Вы писали:
...
B>>>Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.

AD>>Замечательная идея! Спасибо за совет!


AD>>Правда есть проблема с записью файлов на сетевой диск. Это означает что на всех компьютерах с которых доступен сетевой диск/каталог, должен быть установлен этот драйвер. Если на


...

B>А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.


Не все пользователи готовы писать на сетевой диск. Некоторые хотят локально. А еще один специальный сервис, специальная шара, специальный сервер — общее усложнение системы. Причем, все это вне области нашей экспертизы. Нам очень не хочется заниматься file management. Это ответственность пользователей и их IT department.

Без прав на удаление не получается потому что при перезаписи файлов стандартные процедуры Delphi и C++/MFC производят удаление файлов которое запрещать не нужно. Увы, контроль должен быть более тонкий.
Отредактировано 07.10.2014 20:10 AlexanderDz . Предыдущая версия .
Re[5]: Filter driver
От: bazis1 Канада  
Дата: 07.10.14 20:14
Оценка:
Здравствуйте, AlexanderDz, Вы писали:
B>>А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.

AD>Не все пользователи готовы писать на сетевой диск. Некоторые хотят локально. А еще один специальный сервис, специальная шара, специальный сервер — общее усложнение системы. Причем, все это вне области нашей экспертизы. Нам очень не хочется заниматься file management. Это ответственность пользователей и их IT department.


AD>Без прав на удаление не получается потому что при перезаписи файлов стандартные процедуры Delphi и C++/MFC производят удаление файлов которое запрещать не нужно. Увы, контроль должен быть более тонкий.

Не кривое решение тут может быть только одно — запускать вашу программу под отдельным аккаунтом, у которого есть нужные права. Все остальное — полумеры из области DRM.
Re[6]: Filter driver
От: AlexanderDz  
Дата: 07.10.14 20:29
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, AlexanderDz, Вы писали:

B>>>А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.

AD>>Не все пользователи готовы писать на сетевой диск. Некоторые хотят локально. А еще один специальный сервис, специальная шара, специальный сервер — общее усложнение системы. Причем, все это вне области нашей экспертизы. Нам очень не хочется заниматься file management. Это ответственность пользователей и их IT department.


AD>>Без прав на удаление не получается потому что при перезаписи файлов стандартные процедуры Delphi и C++/MFC производят удаление файлов которое запрещать не нужно. Увы, контроль должен быть более тонкий.

B>Не кривое решение тут может быть только одно — запускать вашу программу под отдельным аккаунтом, у которого есть нужные права. Все остальное — полумеры из области DRM.

Нет, тоже не получается. Стандартный FileOpen диалог есть ни что иное как упрощенный Windows Explorer который может удалять и переименовывать каталоги. Через этот диалог пользователь исполняющий программу с правами специально пользователя может сделать все. Через драйвер можно "покопаться" в адресном пространстве клиентского процесса и посмотреть — а не активен ли сейчас FileOpen диалог. Если да, то операции удаления запретить.
Re[7]: Filter driver
От: bazis1 Канада  
Дата: 07.10.14 20:43
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Нет, тоже не получается. Стандартный FileOpen диалог есть ни что иное как упрощенный Windows Explorer который может удалять и переименовывать каталоги. Через этот диалог пользователь исполняющий программу с правами специально пользователя может сделать все. Через драйвер можно "покопаться" в адресном пространстве клиентского процесса и посмотреть — а не активен ли сейчас FileOpen диалог. Если да, то операции удаления запретить.

Мне шестое чувство подсказывает, что подобные вещи должны быть отключаемы через group policy. Самому гуглить лень.
Отредактировано 07.10.2014 22:27 bazis1 . Предыдущая версия .
Re[7]: Filter driver
От: AleksandrN Россия  
Дата: 08.10.14 05:18
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Стандартный FileOpen диалог есть ни что иное как упрощенный Windows Explorer который может удалять и переименовывать каталоги.


Напиши свой диалог выбора файла. Если, кроме как с твой программой, пользователю ни с чем больше работать не надо на этой машине, то для нужного пользователя замени в реестре запуск explorer.exe на запуск твоей программы. Как вариант — написать программу, которая будет запускаться вместо explorer.exe и, в зависимости от требуемых действий, будет запускать либо твой софт, либо стандартный эксплорер.
Re[8]: Filter driver
От: AlexanderDz  
Дата: 08.10.14 10:28
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, AlexanderDz, Вы писали:


AD>>Нет, тоже не получается. Стандартный FileOpen диалог есть ни что иное как упрощенный Windows Explorer который может удалять и переименовывать каталоги. Через этот диалог пользователь исполняющий программу с правами специально пользователя может сделать все. Через драйвер можно "покопаться" в адресном пространстве клиентского процесса и посмотреть — а не активен ли сейчас FileOpen диалог. Если да, то операции удаления запретить.

B>Мне шестое чувство подсказывает, что подобные вещи должны быть отключаемы через group policy. Самому гуглить лень.

Увы, увы, увы... Мне не удалось найти как запретить удаление/переименование в FileOpen диалоге. А идея очень заманчивая...
Re[8]: Filter driver
От: AlexanderDz  
Дата: 08.10.14 10:33
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>Здравствуйте, AlexanderDz, Вы писали:


AD>>Стандартный FileOpen диалог есть ни что иное как упрощенный Windows Explorer который может удалять и переименовывать каталоги.


AN>Напиши свой диалог выбора файла. Если, кроме как с твой программой, пользователю ни с чем больше работать не надо на этой машине, то для нужного пользователя замени в реестре запуск explorer.exe на запуск твоей программы. Как вариант — написать программу, которая будет запускаться вместо explorer.exe и, в зависимости от требуемых действий, будет запускать либо твой софт, либо стандартный эксплорер.


Можно написать и свой FileOpen диалог. Но тогда надо будет перелопатить с пяток продуктов и которые пишутся уже лет 15 и там заменить все FileOpen на свой диалог... Это не реалистично.

Увы, на компьютеры могут быть установлены программы других производителей.
Re[9]: Filter driver
От: Tourist Россия  
Дата: 08.10.14 12:49
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Увы, на компьютеры могут быть установлены программы других производителей.


А нельзя посмотреть как программы других производителей решают эту же проблему? или им не надо сохранять файлы на диск?
Re[10]: Filter driver
От: AlexanderDz  
Дата: 08.10.14 15:38
Оценка:
Здравствуйте, Tourist, Вы писали:

T>Здравствуйте, AlexanderDz, Вы писали:


AD>>Увы, на компьютеры могут быть установлены программы других производителей.


T>А нельзя посмотреть как программы других производителей решают эту же проблему? или им не надо сохранять файлы на диск?


Точно неизвестно. Но похоже что они сохраняют копию файлов в базе данных. Тогда приходится писать программы которые проверяют на наличие файлов которые не удалены и не изменены. А если это произошло, то надо файлы восстановить. Другая проблема что база данных может быть очень большой. Тогда придется писать программу которая будет обслуживать эту базу данных — удаление уже устаревших данных в архив, контрольная копия базы данных и т.д.

В результате этого всего будет написано много строк кода. А судя по прошлому опыту, если код написан и поставлен клиенту, то потом очень трудно избавиться от сопровождения этого кода на годы.
Re: Запретить удаление файлов пользователям но не навредить программам
От: Sinix  
Дата: 08.10.14 18:04
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.


Стандартное решение: выносим часть, которая требует повышенных прав в сервис (службу windows), запускаем службу от имени специально заведённого пользователя, раздаём этому пользователю права, остальным обрезаем.

Если машина в AD, то можно повесить на все сервисы свой domain login или вообще ad service account (начиная с 2008 R2, если ничего не забыл). Вот тут есть описание всех вариантов.

Как бонус:
1. Можно навесить аудит windows индивидуально на этот логин и распечатывать все действия с ФС красивым отчётом.
2. Никто не докопается "а почему работает cmd /k del myFile"? Особенно неприятно, если этот момент обнаружит СБ предприятия
3. Не надо никаких извратов с драйверами-фильтрами ФС и подписью под x64. Оверкилл же.
Re[2]: Запретить удаление файлов пользователям но не навредить программам
От: AlexanderDz  
Дата: 08.10.14 18:47
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, AlexanderDz, Вы писали:


AD>>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.


S>Стандартное решение: выносим часть, которая требует повышенных прав в сервис (службу windows), запускаем службу от имени специально заведённого пользователя, раздаём этому пользователю права, остальным обрезаем.


...

Категорически согласен. У меня (моей организации) стандартная проблема и у нее есть стандартное решение. Увы, в стандратных условиях. Но, можно ли назвать условия стандартными если такой реорганизации надо будет подвергнуть несколько проектов на VB6 и Delphi?
Re[3]: Запретить удаление файлов пользователям но не навреди
От: AlexanderDz  
Дата: 08.10.14 20:16
Оценка:
Здравствуйте, AlexanderDz, Вы писали:

AD>Здравствуйте, Sinix, Вы писали:


S>>Здравствуйте, AlexanderDz, Вы писали:


AD>>>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.


S>>Стандартное решение: выносим часть, которая требует повышенных прав в сервис (службу windows), запускаем службу от имени специально заведённого пользователя, раздаём этому пользователю права, остальным обрезаем.


AD>...


AD>Категорически согласен. У меня (моей организации) стандартная проблема и у нее есть стандартное решение. Увы, в стандратных условиях. Но, можно ли назвать условия стандартными если такой реорганизации надо будет подвергнуть несколько проектов на VB6 и Delphi?


Однако! Ну если перенести операции записи файлов в сервис связано с большими затратами, то можно перехватить Win32 вызовы CreateFile, WriteFile, CloseFile, DeleteFile, MoveFile и т.д. и перенести их сервис работающий под правами специального пользователя.

Тогда и не надо будет "высшего пилотажа" с file system filter. А то пока все отладишь BSOD насмотришься до посинения

Какие тут могут быть засады? Что надо использовать для перехвата Win API — кажется mhook?
Отредактировано 08.10.2014 20:47 AlexanderDz . Предыдущая версия .
Re[4]: Filter driver
От: AlexanderDz  
Дата: 08.10.14 20:30
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, AlexanderDz, Вы писали:


AD>>Здравствуйте, bazis1, Вы писали:


B>>>Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.


AD>>Замечательная идея! Спасибо за совет!


AD>>Правда есть проблема с записью файлов на сетевой диск. Это означает что на всех компьютерах с которых доступен сетевой диск/каталог, должен быть установлен этот драйвер. Если на компьютере нет этого драйвера, то можно все и драйвер от этого не защитит — его-же просто нет. Но, надеюсь, тогда сетевые администраторы согласятся предоставить доступ к сетевому каталогу только с компьютеров с драйверами.


AD>>Этого всего не надо будет если драйвер работающий на файл сервере получит информацию о программе которая будет выполнять файловую операцию. Это возможно? Что-то мне слабо верится.

B>А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.

Спасибо за идею! Вот тут я пришел к почти такому-же решению: http://rsdn.ru/forum/design/5812279.1
Автор: AlexanderDz
Дата: 09.10.14
.
Re[4]: Запретить удаление файлов пользователям но не навредить программам
От: AlexanderDz  
Дата: 22.10.14 13:25
Оценка:
...

AD>Однако! Ну если перенести операции записи файлов в сервис связано с большими затратами, то можно перехватить Win32 вызовы CreateFile, WriteFile, CloseFile, DeleteFile, MoveFile и т.д. и перенести их сервис работающий под правами специального пользователя.


AD>Тогда и не надо будет "высшего пилотажа" с file system filter. А то пока все отладишь BSOD насмотришься до посинения


AD>Какие тут могут быть засады? Что надо использовать для перехвата Win API — кажется mhook?


Увы, увы... Таки попал в засаду. Наши продукты защищены продуктом SafeNet, в который встроена защита от перехватывания Windows API.

Тогда получается только фильтр файловой системы. К счастью, самому его кажется писать не надо — есть куча компаний которая предлагает драйверы выполняющие требуемые функции. Проще купить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.