
Можно ли установить разрешения для файла таким образом, чтобы пользователь не мог скопировать файл (нет разрешений на чтение), но приложение, запущенное под этим пользователем, могло бы прочитать этот файл?
Думаю, что нет, но я не уверен на 100%. Чтобы приложение могло его прочитать, пользователь, под управлением которого оно запущено, должен иметь разрешения на чтение?
Может быть, что-то подобное можно настроить с помощью политик Windows?
решение1
Поскольку приложение будет работать с разрешениями пользователя, оно не сможет прочитать файл, если пользователь не сможет прочитать файл.
Вы можете попробовать настроить процесс, который выдает себя за другого пользователя от имени пользователя, запускающего приложение, которое может иметь другие разрешения. Это будет довольно много работы, и в зависимости от того, как вы это реализуете, вы в любом случае дадите пользователю это разрешение, поскольку он просто будет искать учетные данные, используемые для выдачи себя за другого пользователя.
Другой подход заключается в проверке того, что пользователь не может просмотреть содержимое каталога, содержащего файл. Файл все равно можно будет открыть, поскольку у пользователя все еще будут разрешения на чтение. Этот подход простозатемнятьдоступ и не препятствовать ему!
решение2
Это зависит от технического уровня вашего пользователя. Если он/она хорошо образован, то ответ - Нет, но вы можете использовать различные трюки со скрытностью, которые "не дают" пользователю увидеть фактическое содержимое файла, хотя к нему можно получить доступ из вашей программы. Самый простой метод (IMHO) сокрытия - использоватьальтернативные потоки данных(ADS) где-то в %AppData%
Не могли бы вы уточнить, чего вы пытаетесь добиться? Может быть, есть лучшее решение, которое мы могли бы вам предложить.
решение3
Если пользователь запустит приложение без прав администратора, приложение не сможет получить доступ к файлу.
Если пользователь запускает приложение как администратор, программа может получить доступ к файлу, пользователь не может. Обратите внимание, что приложение, запущенное как администратор, имеет гораздо больше прав, и это может быть непрактично.
Лучшим подходом было бы скрыть файл или сохранить его иным образом, в зависимости от того, что делает приложение и насколько вы контролируете его доступ к файлам.
Например, вы можете хранить сами данные в базе данных, которая находится в сети, или иметь связь сервер-клиент, где сервер передает файл клиенту, клиент отображает его и удаляет копию по завершении. По сути, это может быть так же просто, как веб-сервер. Помните, что если пользователь открывает файл, он может сохранить его, и тогда у него есть доступ. Отображение файла, встроенного в веб-страницу, может предотвратить это.