A Microsoft tem um documento de práticas recomendadas em relação ao armazenamento de dados de aplicativos versus dados de usuários em diferentes plataformas Windows?
Pergunta
Ao criar um aplicativo que será direcionado a muitas versões do Windows, qual é a prática recomendada para determinar onde os dados específicos do aplicativo devem ser armazenados.Especificamente:
- Dados específicos do aplicativo (por exemplo,dados de configuração do aplicativo)
- Dados/configurações específicas do usuário
Eu sei que no Windows Vista, por exemplo, existem variáveis de ambiente, como% APPDATA%, que podem ser usadas, mas e o Windows 7, Windows XP, Windows 98.
Minha principal pergunta é: a Microsoft tem um documento de práticas recomendadas para isso, descrevendo os locais do sistema de arquivos para os diferentes tipos de dados (aplicativo vs.usuário) e as implicações de segurança que precisam ser lembradas ao ler/gravar nesses locais?
Também estou interessado em saber como isso se aplica não apenas a aplicativos .NET (onde ApplicationSettingsBase pode ser utilizado), mas também a aplicativos C/C++ não gerenciados.
Obrigado a Pax e Remus pelas ótimas respostas.Também encontrei este item (específico para XP):
Solução
Há uma boa descrição aqui dos vários valores CSIDL e das pastas às quais eles se referem (incluindo uma descrição que deverá lhe dizer o que você precisa saber).
Ele também contém links para as funções que você deve usar para recuperar esses caminhos de pastas especiais.
Observe que, a partir do Vista, o método mudou um pouco.Agora usa KNOWNFOLDERID
em vez de CSIDL
e as funções também mudaram.Ver aqui.
Você ainda pode usar as funções mais antigas (no momento), pois acredito que agora elas são apenas invólucros das novas.Em algum momento no futuro isso pode mudar.
Outras dicas
Geralmente são descritos no Programa de logotipo de software do Windows (link quebrado).O link é para o documento de requisitos do logotipo do Windows 7, mas existem documentos semelhantes para XP, Windows 2003, Vista e Windows 2008.Na seção Requisitos Técnicos você encontrará algumas das informações que procura:
Todos os dados do aplicativo que devem ser compartilhados entre os usuários no computador devem ser armazenados dentro
ProgramData
Todos os dados do aplicativo exclusivos para um usuário específico e não devem ser compartilhados com outros usuários do computador devem ser armazenados em
Users\<username>\AppData
Nas instalações "por máquinas", os dados do usuário devem ser gravados na primeira execução e não durante a instalação.Isso ocorre porque não há localização correta do usuário para armazenar dados no momento da instalação.
EDITAR:
Usuários do Windows 10, procurem o Requisitos de certificação para aplicativos de desktop do Windows (Seção 10)