Как я могу заблокировать файл в .net, чтобы только мое приложение могло получить к нему доступ? - PullRequest
3 голосов
/ 31 января 2011

Я читаю запросы, касающиеся блокировки файлов, но они либо относятся к проблеме множественного доступа к файлу, либо к чему-то еще. Обычно ответом на это будет блокировка файла с помощью FileStream.Lock, с использованием FileShare.None с File.Open и т. Д., Но блокировка скажет100 файлов - плохая практика программирования, также в этих случаях блокировка будет снята, если мое приложение закроется / произойдет сбой, чего я тоже не хочу, т.е. я хочу, чтобы блокировка сохранялась, и только мое приложение могло открыть ее для других.

На MSDN я нашел пространства имен System.Security, System.Security.AccessControl, я считаю, что они могут помочь. Также эта статья проливает некоторый свет на то, что я хочу.

РЕДАКТИРОВАТЬ ::

Mannnnn ... кто-нибудь упомянул "эту" ссылку, которую я предоставил.

Хорошо ... короче, я хочу кое-что, что делает программное обеспечение PC Security.Это звонит в колокол ... кто-нибудь использовал его?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 31 января 2011

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

1 голос
/ 31 января 2011

Вы можете зашифровать файл и вставить ключ в свое приложение. Это зависит от того, что вы подразумеваете под «только мое приложение может открыть его для других».

1 голос
/ 31 января 2011

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

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

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

Что конкретно вы пытаетесь предотвратить?Могут быть и другие способы справиться с этим, кроме попытки заблокировать файлы.

0 голосов
/ 07 октября 2016

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

0 голосов
/ 31 января 2011

Вы пытаетесь найти способ реализовать метод («заблокировать» файлы), а не достичь цели.

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

Однако проблема в том, что ключ будет храниться в коде вашего приложения и теоретически может быть извлечен и использован для доступа к контейнеру. Практически процедуру можно сделать более сложной, но это не 100% пуленепробиваемое решение.

0 голосов
/ 31 января 2011

Я бы порекомендовал использовать класс IsolatedStorage . Там вы можете хранить файл, который напрямую «связан» с вашим приложением.

Присмотритесь к нему в MSDN IsolatedStorage . Вы можете использовать файл в области сборки . В любом случае каждый пользователь МОЖЕТ перейти через файловую систему к вашей папке applicationData и открыть этот файл вручную (хотя это довольно неожиданно)

...