Onde Armazenar as Informações

Alguns aplicativos armazenam suas configurações em áreas globais do registro (HKLM\Software) ao invés de armazenar perfil do usuário (HKCU\Software), assim como, gravam configurações e logs nas suas próprias pastas, ou nas pastas de sistema (Windows, System32, Arquivos de Programas). 

A tabela a seguir exibe a diferença da localização dos diretórios no Windows XP e no Windows 7: 

Diretório

Windows XP

Windows 7

Usuário

%SystemDrive%\Documents and Settings\<user>

%SystemDrive%\users\<user>

Área de Trabalho

%UserProfile%\Desktop

%UserProfile%\Desktop

Documentos

%UserProfile%\My  Documents

%UserProfile%\Documents

Todos Usuários

%SystemDrive%\Documents  and Settings\All Users

 

%SystemDrive%\Users\Public  or ...

%SystemDrive%\ProgramData

 

  

Uma boa prática recomendada pela Microsoft é instalar apenas os arquivos da aplicação no diretório Arquivos de Programas. Os dados específicos dos usuários devem ser armazenados no diretório %AppData% e as configurações dos usuários no perfil de registro do usuário (HKEY_CURRENT_USER\Software). Sempre que possível utilize as variáveis de ambiente ao invés de deixar hard code os caminhos utilizados pela aplicação.

A tabela a seguir serve como guia para orientar onde salvar as informações:

 

Requisitos

Informações Compartilhadas

Informações do Usuário

Visível no Explorer

%PUBLIC%  (%SystemDrive%\Users\Public)

%USERPROFILE%\Documents

Oculto no Explorer e armazenado  apenas localmente

%ALLUSERSPROFILE% (%ProgramData%,  %SystemDrive%\ProgramData)

%LOCALAPPDATA%  (%USERPROFILE%\AppData\Local)

Oculto no Explorer e que faz  parte do perfil do usuário

n/a

%APPDATA%  (%USERPROFILE%\AppData\Roaming)

 

Para código não gerenciado (C,C++) utilize as APIs:

  • ShGetFolderPath function (CLSID_...)
  • SHGetKnownFolderPath(FOLDERID_...)

 

Para código gerenciado (C#, VB.NET) utilize as APIs:

  • System.Environment.GetFolderPath
  • Microsoft.VisualBasic.FileIO.SpecialDirectories
  • My.Computer.FileSystem.SpecialDirectories