
É possível definir as permissões em um arquivo para que um usuário não consiga copiar o arquivo (sem permissões de leitura), mas um aplicativo em execução nesse usuário possa ler esse arquivo?
Acho que não, mas não tenho 100% de certeza - para que o aplicativo pudesse lê-lo, o usuário que está executando teria que ter permissões de leitura?
Talvez tal coisa possa ser definida com as políticas do Windows?
Responder1
Como o aplicativo estaria sendo executado com permissões de usuário, ele não seria capaz de ler o arquivo se o usuário não conseguisse ler o arquivo.
Você pode tentar configurar um processo que represente outro usuário em nome do usuário que executa o aplicativo, que pode ter permissões diferentes. Vai ser um pouco trabalhoso e, dependendo de como você implementa isso, você daria essa permissão ao usuário de qualquer maneira, pois ele apenas procuraria as credenciais usadas para a representação.
Outra abordagem seria verificar se um usuário não consegue listar o conteúdo do diretório que contém o arquivo. Ainda seria possível abrir o arquivo, pois o usuário ainda teria permissões de leitura sobre ele. Esta abordagem apenasobscurecero acesso e não impedi-lo!
Responder2
Depende do nível de tecnologia do seu usuário. Se ele/ela for bem educado, a resposta é: Não, mas você pode usar vários truques de obscuridade que "impedem" o usuário de ver o conteúdo real do arquivo enquanto ele pode ser acessado a partir do seu programa. O método mais fácil (IMHO) de ofuscação é usarfluxos de dados alternativos(ADS) em algum lugar em %AppData%
Você poderia esclarecer o que você está tentando alcançar? Pode haver uma solução melhor que possamos sugerir a você
Responder3
Se o usuário executar o aplicativo sem permissões administrativas, o aplicativo não conseguirá acessar o arquivo.
Se o usuário executar o aplicativo como administrador, o programa poderá acessar o arquivo, o usuário não. Observe que um aplicativo executado como administrador tem muito mais direitos e isso pode não ser prático.
Uma abordagem melhor seria ocultar o arquivo ou armazená-lo de forma diferente, dependendo do que o aplicativo faz e de quanto controle você tem sobre como ele acessa os arquivos.
Por exemplo, você pode armazenar os próprios dados dentro de um banco de dados localizado na rede ou ter uma comunicação servidor-cliente onde o servidor transmite o arquivo para o cliente, o cliente o exibe e remove a cópia após a conclusão. Em essência, isso poderia ser tão simples quanto um servidor web. Lembre-se de que se um usuário abrir um arquivo, ele poderá armazená-lo e terá acesso. Mostrar o arquivo incorporado na página da web pode evitar isso.