Можно заблокировать каталог, так что только один домен приложения может получить к нему доступ


Можно ли заблокировать каталог в windows и linux (для монопроцессорного доступа), доступ к которому может получить только одно приложение/пользователь?

Мне нужно записать зашифрованные XML-сообщения в каталог, но я не хочу, чтобы кто-то их удалял. Я подозреваю, что было бы проще использовать Mono на linux.

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

Спасибо.

1 3

1 ответ:

Предполагая, что ваши каталоги находятся в файловой системе NTFS, вы можете использовать NTFS, как описано здесь, или собственный syscall из Mono, как описано здесь. Хитрость заключается в том, что код в каждом домене приложения должен выполняться как собственный пользователь.

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

Если вы просто ищете синхронизацию (это означает, что вы не хотите, чтобы несколько потоков обращались к одним и тем же файлам одновременно), вы можете просто использовать центральный реестр (таблицу базы данных или какое-либо другое транзакционное хранилище), чтобы отслеживать, кто что записывает.