Pergunta

Eu estou tentando escrever um instalador (criando um .vdproj) que irá funcionar no Windows Vista e XP. A única coisa que eu estou achando é que quando eu tentar executá-lo no Vista, os arquivos que incluem no instalador são instalados com permissões somente leitura para os grupos de usuários. Este é um problema porque o aplicativo precisa ler / escrever a partir desses arquivos. A única maneira que eu fui capaz de fazê-lo funcionar, quer seja para "Executar como Administrador" ou, na verdade, alterar as permissões. Alguém sabe como fazer esses arquivos ser aberto a qualquer pessoa para escrever? Obrigado.

Foi útil?

Solução

A pasta Arquivos de Programas e seu conteúdo são somente leitura para usuários padrão. Isso ocorre por design, e você verá que este é o caso no Windows XP também. É que no Windows XP, tantas pessoas correm com direitos de administrador todo o tempo que você pode ficar longe com isso. Se você quiser distribuir o seu aplicativo em um ambiente de negócios, você vai logo descobrir que não vai funcionar no XP lá, também.

A solução é arquivos lugar não na pasta executável do programa se os usuários padrão terá acesso de gravação. Coloque-os no Application Data pasta em seu lugar. Para a maioria das máquinas XP, que será aqui:
C: \ Documents and Settings \ All Users \ Application Data \ Seu App

No entanto, isso não vai ser sempre o caso e que é um pouco diferente em Vista de qualquer maneira, para ter certeza de obter esse caminho através do mecanismo fornecido pelo seu ambiente de programação. Na Net, você pode usar a função Environment.GetFolderPath().

Outras dicas

Para adicionar alguns detalhes para a resposta de Joel:

  • Em Win2K e XP, CSIDL_APPDATA deve ser usado para por usuário, de roaming . Em Vista, este é o FOLDERID_RoamingAppData.

  • Em Win2K e XP, CSIDL_LOCAL_APPDATA deve ser usado para por usuário, não roaming . Em Vista, este é FOLDERID_LocalAppData.

  • Em Win2K e XP, CSIDL_COMMON_APPDATA deve ser usado para por máquina , ou seja, todos os usuários de um aplicativo. Em Vista, este é FOLDERID_ProgramData.

NB Esta última pasta é normalmente somente leitura para usuários sem motor não-administradores. A solução recomendada para isso é criar um / sub-pasta de leitura e escrita durante a instalação do aplicativo.

EDIT: Para obter os locais reais de essas constantes em uma máquina específica usando código gerenciado, tente System.Environment.GetFolderPath com as constantes definidas aqui . Outro link útil é aqui .

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