Pergunta

Eu tenho um serviço do Windows que atualiza nosso produto. Ele copia os arquivos do produto em um diretório temporário, normalmente "C: \ Windows \ Temp", corrige os binários, e então usa MoveFileEx para copiar os arquivos de volta para o diretório de instalação em uma reinicialização, normalmente "C: \ Program Files \ Product ". Os arquivos no diretório de instalação estão herdando seus atributos de segurança da pasta pai. Após a cópia, patch e reinicialização, os arquivos no diretório de instalação estão faltando alguns ACLs. Especificamente, os arquivos não têm a ACL para o grupo Usuários mais para que os usuários não podem mais executar o programa após a reinicialização.

Alguém pode explicar o que está acontecendo aqui? Parece que a cópia do diretório de instalação para o diretório temp, os ficheiros herdarem as ACLs do diretório temporário. Na MoveFileEx / Reiniciar, porém, os arquivos somente herdar as ACLs que tanto a instalar e diretórios temporários têm em comum.

Foi útil?

Solução

No Windows, se você copiar um arquivo do arquivo assume as ACLs do diretório de destino. Se você mover um arquivo ACL vai com ele substituindo qualquer que poderia herdar a partir desse diretório. Eu não tenho certeza de como MoveFileEx pode operar de forma diferente em um arquivo.

O diretório temporário é normalmente localizado sob o perfil de utilizador (ambos% TMP% e% TEMP% costumam apontar aqui) para copiar arquivos aqui terá permissões para esse usuário. Movendo os arquivos para o diretório de arquivos de programa terá apenas que usuários direitos com eles e, portanto, apenas executáveis ??pelo usuário de instalação.

Outras dicas

Uma solução potencial é para corrigir cópias dos arquivos com-no mesmo diretório, mas com nomes diferentes. Após a reinicialização, as versões corrigidas poderia ser trocado em. Como alternativa, faça uma reinicialização primeiro e depois corrigir-los no local, e apenas apoiá-los para o diretório temporário no caso é necessária uma reversão manual.

Se você realmente quer movê-los para um local diferente, criando uma pasta temporária no mesmo local que os arquivos a serem corrigidas ajudaria as permissões permanecer o mesmo supondo que o diretório está usando permissões herdadas.

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