Um dos novos recursos mais importantes introduzidos com o Windows 95 foi o Registro do Windows. O Registro do Windows oferecia um local centralizado, semelhante a um banco de dados, para armazenar configurações de aplicativos e do sistema. Não há mais arquivos .INI de texto simples espalhados por todo o sistema. Em vez disso, faça algumas chamadas fáceis à API e as configurações do seu aplicativo estarão aninhadas com segurança no interior da colmeia do registro.
Mas depois de conviver com o Registro do Windows por mais de uma década, começo a me perguntar se não seria melhor usarmos os arquivos .INI.
Entendo a necessidade de armazenar configurações verdadeiramente abrangentes do sistema em um único local. Permita que o sistema operacional armazene as configurações da forma que julgar adequada. O verdadeiro problema do registro é que ele foi exposto ao mundo externo. Em vez de ser uma colmeia central e segura apenas para as configurações mais essenciais e globais, com o tempo o registro tornou-se lentamente uma pilha de lixo com diversas configurações inúteis para todos os aplicativos mais simples do planeta.
Ai do pobre usuário de computador que ingenuamente tenta manipular o sistema de arquivos sem antes suplicar aos Deuses do Registro. A manipulação do sistema de arquivos é totalmente óbvia, completamente intuitiva e, infelizmente, também é a maneira mais rápida de quebrar um aplicativo no Windows. O senhor precisa conciliar quase tudo o que faz no sistema de arquivos com aquela bolha de dados binários opaca e implacável conhecida como Registro do Windows.
Por exemplo, quando atualizo e reinstalo o Windows, a maioria dos jogos que instalei na minha unidade secundária é imediatamente quebrada porque eles armazenam informações de cd-key e caminho (redundantes) no registro. As equipes de suporte dos fornecedores de jogos dirão para o senhor reinstalar todos os seus jogos e patches. Pessoalmente, prefiro pesquisar em fóruns e vasculhar o registro para recriar manualmente as duas ou três chaves de registro que o jogo está procurando.
Minha vida seria muito mais fácil se as configurações por aplicativo fossem armazenadas em um local onde eu pudesse vê-las facilmente, manipulá-las e fazer backup delas. Como, digamos… em arquivos INI.
No entanto, há uma alternativa. Se os aplicativos do Windows não estivessem tão ocupados em empilhar sem pensar todas as suas configurações no depósito de lixo do registro com todos os outros, eles poderiam optar por seguir as novas convenções do Windows Vista, muito mais simples, para armazenar dados específicos de aplicativos:
/Users/Jeff/AppData/Local /Users/Jeff/AppData/LocalLow /Users/Jeff/AppData/Roaming
Local e LocalLow são para bits de dados de aplicativos que são realmente específicos da máquina. Roaming é para configurações não específicas da máquina que seguirão o usuário. É onde estará a maior parte das configurações do aplicativo. Tudo isso é explicado na seção Guia de implantação de dados do usuário em roaming (documento do Word). No entanto, essas ainda são configurações específicas do usuário, obviamente, pois estão sob o /Users
. Não consigo encontrar nenhuma nova convenção do sistema de arquivos do Windows para configurações não específicas do usuário no nível do sistema. Suponho que ainda seja o Ye Olde Registry por padrão.
É possível escrever aplicativos do Windows que não usam o registro de forma alguma. Esses são alguns dos meus aplicativos favoritos. Mas eles também são os mais raros e preciosos de todos os aplicativos no ecossistema de software do Windows.
Com o passar do tempo, é justo dizer que o Passei a odiar o Registro do Windows. Como posso odiá-lo? Deixe-me contar as maneiras:
- O registro é um ponto único de falha. É por isso que todas as dicas de edição do registro que você encontrará começam com um com uma grande e gritante isenção de responsabilidade sobre como o senhor pode quebrar seu computador com o regedit.
- O registro é opaco e binário. Por mais que eu não goste do o imposto sobre a faixa de ânguloPelo menos os arquivos de configuração XML são razoavelmente legíveis e permitem tantos comentários quanto o senhor achar necessário.
- O registro deve ser em sincronia com o sistema de arquivos. Se excluir um aplicativo sem “desinstalá-lo”, o senhor ficará com o registro obsoleto. Ou se um aplicativo tiver um desinstalador mal escrito. O sistema de arquivos não é mais a declaração de registro – ele precisa ser mantido em sincronia com o registro de alguma forma. É uma violação total do do princípio DRY.
- O registro é monolítico. Digamos que o senhor queira mover um aplicativo para um caminho diferente em seu computador, ou até mesmo para um computador diferente. Boa sorte ao extrair as configurações relevantes para esse aplicativo específico do registro gigante tarball. Um determinado aplicativo normalmente tem dezenas de configurações espalhadas por todo o registro.
O que é deprimente em tudo isso é o quanto as convenções do UNIX são prescientes em retrospecto. Quantos bilhões de horas-homem já poderíamos ter economizado se alguns dos primeiros desenvolvedores do Windows NT 3.0 ou 3.5 tivessem decidido desativar o acesso público ao registro e redirecionado de forma transparente as chamadas da API do registro público para que seguissem convenções de armazenamento de sistema de arquivos mais simples, semelhantes às do UNIX?