Pergunta

O que é o lugar certo para arquivos de dados do programa de loja que são as mesmas para cada usuário, mas tem que ser gravável para o programa? Qual seria a localização equivalente em MS Windows XP? Eu li que C: \ ProgramData não pode ser escrito após a instalação por usuários normais. Isso é verdade? Como posso recuperar esse diretório programaticamente usando o Platform SDK?

Foi útil?

Solução

SHGetFolderPath () com CSIDL de CSIDL_COMMON_APPDATA.

Leia mais em http://msdn.microsoft .com / en-us / library / bb762181 (VS.85) .aspx

Se você precisa do caminho em um arquivo de lote, você também pode usar a variável% ALLUSERSPROFILE ambiente%.

Outras dicas

Há uma grande resumo das diferentes opções aqui: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead -de-programa-files.aspx

Onde Devo escrever Dados do Programa Em vez de Arquivos de Programas?

atualização Um código de aplicação comum é isto: "meu aplicativo usado para gravação arquivos para arquivos de programa. Parecia um lugar tão bom para colocá-lo como qualquer de outros. Tinha o nome do meu aplicativo em -lo já, e porque os meus usuários estavam admins, ele funcionou bem. Mas agora eu vejo que este pode não ser tão lugar um grande a coisas vara como eu pensava, porque com UAC até mesmo administradores executado com privilégios de usuário-como padrão a maior parte do tempo. Então, onde eu deveria colocar meus arquivos em vez disso? "

Na verdade SHGetFolderPath está obsoleta.

SHGetKnownFolderPath deve ser usado em seu lugar.

Você pode usar:

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);

artigo See Raymond Chen sobre esta questão específica .

Em suma, você está pedindo um buraco segurança .

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