Melhor lugar para guardar informações de usuário para aplicativos do Windows XP e Vista
-
02-07-2019 - |
Pergunta
Eu preciso para salvar informações de login de um usuário de forma criptografada para esta aplicação que estou construindo, mas não tenho certeza do melhor lugar para salvar o arquivo. Eu não quero guardá-lo para a pasta de aplicação do programa como eu quero por usuário.
Então, qual é a melhor pasta (ou caminho) para salvá-lo em?
Edit:. Usando C ++
Solução
Parece que C: \ Documents and Settings \% username% \ Local Settings \ Application Data pode ser o lugar apropriado de acordo com Wikipedia . O artigo diz que este local é usado para "configurações específicas do usuário e da aplicação específica do computador".
Edit: Cruizer apontou nos comentários (eu respondia lá, mas eu não posso comentar ainda) que no Vista é C: \ Users \% username% e que não deve ser codificado. Obrigado.
Outras dicas
Use a Protecção API de Dados (DPAPI) - uma parte do CryptoAPI no XP e Vista. Aqui está uma boa visão do DPAPI - http://msdn.microsoft.com/en -us / library / ms995355.aspx
Sim, parece caminho do aplicativo locais como um vencedor.
Eu encontrei este artigo na MSDN para obtê-lo em C ++: http: / /msdn.microsoft.com/en-us/library/bb762494.aspx
Exemplo:
char localAppPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, localAppPath);
você está usando .NET? como sobre IsolatedStorage ? Dessa forma, você não precisa se preocupar com o local do diretório, ele só vai estar lá ...
Informação do usuário deve sempre ir em algum diretório sub em% HOMEDRIVE %% HOMEPATH% (que mapeia para o diretório home de usuários). Sem exceções. Um bom lugar para configurações específicas aplicativo por usuário é um directório sub dentro% APPDATA%. Isso mapeia para: "% HOMEDRIVE %% HOMEPATH% \ Application Data" no XP e:. "% HOMEDRIVE %% HOMEPATH% \ AppData \ Roaming" na Vista ??p>
Se você estiver usando .NET para obter pastas especiais que você pode usar
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
ou
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
para a versão não roaming.