Pergunta

Estou tentando gravar em um arquivo que possui os seguintes atributos - Oculto e Somente leitura.Meu processo deve ser capaz de gravar nele, mas outros processos têm acesso somente leitura.

O procedimento que estou seguindo é:

  1. Verifique se o arquivo existe
  2. Remova os atributos existentes no arquivo, ou seja, ocultos e somente leitura
  3. Termine de gravar no arquivo
  4. Aplique os atributos (ocultos e somente leitura) de volta ao arquivo

Sei que essa não é a maneira recomendada de usar os atributos de arquivo e gravar em um arquivo oculto.Existe uma maneira mais agradável de realizar minha tarefa?

Desde já, obrigado.

Foi útil?

Solução

Sim, faça com que seu aplicativo se passe por uma conta especial.Conceda permissões de gravação de arquivo a essa conta nesse arquivo e acesso de leitura a todas as outras contas.

A maneira mais simples de executar no contexto de outro usuário é pressionar shift e clicar com o botão direito do mouse no arquivo exe, selecionar "Executar como usuário diferente".

Com um serviço do Windows, você altera a conta em execução nas propriedades do serviço.O mesmo acontece com as tarefas agendadas do Windows.

Para alterar a conta em execução "no meio do processo", você precisa trabalhar um pouco mais, encontre um bom artigo sobre o assunto, como http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C .

Outras dicas

Como @Albin observa, a maneira correta de resolver o problema de acesso é com permissões de arquivo, não atributos.

Se o arquivo estiver oculto porque você não deseja que os usuários vejam seu conteúdo, sugiro que um mecanismo de criptografia simples (relativamente leve) seria uma solução melhor do que o atributo oculto.

Observe que os atributos ocultos e somente leitura podem ser desativados por um usuário com privilégios suficientes.E normalmente qualquer pessoa pode ativar o recurso "mostrar arquivos e pastas ocultos" no Explorer.

Não há necessidade de remover o atributo oculto.No entanto, não conheço outra solução com o somente leitura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top