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

Я думаю, что нет, но я не уверен на 100% - для того, чтобы приложение могло читать его, пользователь, с которым оно работает, должно иметь права на чтение?

Может быть, такую вещь можно установить с помощью политики Windows?

3 ответа3

1

Поскольку приложение будет работать с правами пользователя, оно не сможет прочитать файл, если пользователь не сможет прочитать файл.

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

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

0

Это зависит от технического уровня вашего пользователя. Если он / она хорошо образован, то ответ - нет, но вы можете использовать различные приемы неясности, которые "мешают" пользователю увидеть фактическое содержимое файла, в то время как он может быть доступен из вашей программы. Самый простой способ (IMHO) запутывания - использовать альтернативные потоки данных (ADS) где-то в% AppData%.

Не могли бы вы уточнить, чего вы пытаетесь достичь? Может быть, есть лучшее решение, которое мы могли бы предложить вам

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .