Como posso permitir que usuários gravem permissões em C: \ ProgramData?

3

Eu tenho um aplicativo antigo que cria e atualiza 2 arquivos diretamente em " C: \ Documents e configurações \ All Users ". Este software costumava funcionar como um charme no Windows 2000 e no Windows XP. No entanto, desde que nos mudamos para o Windows 7, tivemos problemas com a atualização desses dois arquivos.

Após uma investigação rápida, descobri que as permissões de arquivo nos arquivos eram muito restritivas para que nosso aplicativo funcionasse corretamente. Por isso, tentei alterar as permissões de arquivo para conceder controle total ao usuário Everyone . Isso funcionou bem na primeira vez que atualizamos os arquivos, mas depois da primeira gravação, o Windows 7 restaurou as permissões do arquivo para alguns valores padrão. Também tentei apropriar-me da pasta " C: \ ProgramData " e conceder controle total novamente a Todos , mas novamente, após a primeira operação de gravação, as permissões de arquivo são restaurados para as configurações padrão.

A configuração do Controle de Conta de Usuário está atualmente definida como " Notifique-me quando programas tentarem fazer alterações em meu computador (não ofuscam meu desktop) ". Se eu desligar, o problema desaparece. No entanto, essa não é uma solução viável para clientes que usam nosso software.

Não é possível alterar a localização desses dois arquivos. Como posso conceder controle total sobre um arquivo específico localizado em " C: \ ProgramData ", evitando que o sistema operacional restaure algumas permissões padrão?

    
por Laf 18.11.2013 / 21:33

2 respostas

3

Você não pode fazer o que você quer fazer (diretamente). A opção preferida seria atualizar seu software para manipular caminhos corretamente. No entanto, o que você pode fazer é usar o Kit de ferramentas de compatibilidade de aplicativos para criar um shim .

O que o shim pode fazer é que um executável pode redirecionar todas as leituras e gravações de C:\ProgramData para algo como C:\ProgramData\ProgramName e você deve ser capaz de definir as permissões na pasta ProgramName e ter as permissões salvas .

O ACT é um sistema complicado e tem uma curva de aprendizado acentuada. Uma explicação detalhada de como configurá-lo e, em seguida, criar um shim seria muito grande para o formato deste site. Eu recomendo ler o MSDN e tentar fazê-lo sozinho e se você acabar tendo problemas para voltar aqui com problemas específicos em que você entra.

Eu também recomendaria a verificação no site ServerFault para perguntas sobre o ACT enquanto você se arrisca fora do mundo "power user" e no mundo "Profissional de TI" e você pode encontrar melhores recursos lá.

    
por 18.11.2013 / 22:49
1

Por acaso eu encontrei uma solução alternativa que funciona melhor para minha situação, já que não posso modificar o código-fonte, nem tenho a opção de gastar muito tempo aprendendo sobre o Application Compatibility Toolkit (como sugerido por Scott Chamberlain ).

Usar links simbólicos no meu caso foi uma grande economia de tempo / custo. Em um prompt de comando, execute a seguinte sequência:

move C:\ProgramData\SomeFile.bin C:\Test
mklink C:\ProgramData\SomeFile.bin C:\Test\SomeFile.bin 

Desde que todos os usuários requeridos tenham o acesso necessário ao novo local do arquivo ( C:\Test neste caso), tudo é transparente para o aplicativo.

Como mencionei, esta é apenas uma solução alternativa. A resposta de Scott é a maneira correta de fazer isso.

    
por 19.11.2013 / 18:13