Onde armazenar dados gravável para ser compartilhado por todos os usuários em um instalador de vista?

StackOverflow https://stackoverflow.com/questions/114194

Pergunta

Meu aplicativo é instalado através de NSIS.

Eu quero o instalador para instalar o programa para todos os usuários.

Eu posso fazer isso, através da instalação para o diretório dos arquivos de programa '.

Não é um arquivo de banco de dados (firebird), que todas as contas de usuário no sistema deve compartilhar.

Se eu armazenar esse arquivo de banco de dados no diretório dos arquivos de programa 'será somente leitura.

Se eu armazená-lo no diretório usuários APPDATA eles terão cada um uma cópia diferente, quando um usuário adiciona os dados que os outros não vão vê-lo.

Opção 1 - Na minha diretório app em 'arquivos de programa' criar um diretório 'Dados', na minha instalador fazer este dir leitura gravável por todos, de que maneira a virtualização do usuário 'Arquivos de programa' não vai chutar e tudo os usuários podem atualizar o arquivo e ver uns aos outros alterações.

Todas as outras opções?

Foi útil?

Solução

Os dados para todos os usuários devem ser armazenados em% ALLUSERSPROFILE%, ou SHGetFolderPath call () com o CSIDL_COMMON_APPDATA parâmetro para obter a área de armazenamento aos usuários a todos.

http://www.deez.info / sengelha / 2006/02/28 / windows-vista-changes / para mais detalhes.

Outras dicas

Em algum lugar sob o perfil de utilizadores All seria a localização óbvia. Eu acho que existem algumas regras sobre quem fica com leitura / escrita por padrão, mas a documentação MS recomenda se você precisa de algo diferente para criar um subdiretório e definir as ACLs direito no instalador.

Especificamente eu usaria:

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

Veja a NSIS Scripting Referência para mais informações.

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