Por que o software normal desinstala a falha ao remover todos os valores relevantes do registro?
Quando você desinstala um programa, é uma expectativa “razoável” de que todos os rastros dele sejam removidos do sistema, mas esse não é o caso. Por que é que? A postagem de perguntas e respostas do SuperUser de hoje tem as respostas para a pergunta de um curioso leitor.
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
Screenshot cortesia de wandersick (Flickr).
A questão
Leitor de SuperUser Mark Boulder quer saber porque alguns valores do registro sempre permanecem após uma desinstalação normal do software:
Expandindo o tópico do SuperUser Como eu removo do registro os vestígios residuais de software desinstalado, porque é que toda vez que eu desinstalo um programa e depois o procuro via RegEdit, ele ainda está lá??
Por que a maioria dos aplicativos do Windows tem a intenção de deixar pequenos vestígios de si mesmos no registro? A falha está no Windows ou com os desenvolvedores?
Por que os valores do registro geralmente são “deixados para trás” após a desinstalação normal do software??
A resposta
Os colaboradores do SuperUser, Lukas Rieger e Keltari, têm a resposta para nós. Primeiro, Lukas Rieger:
Porque isso é impossível. O registro tem vários nós raiz, mas apenas dois interessantes: LocalMachine e CurrentUser. Normalmente, a configuração grava valores em LocalMachine e o programa em execução apenas grava em CurrentUser (na verdade, a menos que a instalação mexe com as permissões, o programa em execução não pode gravar em LocalMachine).
Embora manter as sobras no LocalMachine seja preguiça (como apontado pelas outras respostas), não é possível limpar a parte CurrentUser.
Se um programa é instalado por máquina (o que a maioria é) e vários usuários o usam, o que o desinstalador deve fazer? Pode remover com segurança as configurações de usuário da conta atual, mas a conta atual pode não ser sua conta. Isso acontece se você tiver iniciado o desinstalador de uma conta não administrativa e inserido as credenciais de uma conta de administrador. Agora, a configuração está sendo executada nessa conta, não a primeira..
E os outros usuários? Ele poderia tentar enumerar todos os usuários, mas suas chaves de registro podem não estar carregadas (o Windows é preguiçoso e carrega apenas as coisas de que precisa).
Mas você não deveria nem tentar isso. Se você usar perfis de roaming (ou seja, serviços de terminal) e, em seguida, excluir todas as configurações na desinstalação, poderá realmente confundir e excluir itens que ainda estejam em uso. Um servidor de terminal é basicamente uma máquina Windows na qual vários usuários fazem login ao mesmo tempo e usam aplicativos. Digamos que você tenha dois servidores de terminal executando um aplicativo. Você desinstala o aplicativo no TS1, agora todas as configurações para todos os usuários se foram no TS2 porque você possui perfis móveis. Opa.
O mesmo também se aplica aos arquivos nos diretórios por usuário. Na configuração dos programas da minha empresa, eu excluo o material por máquina, mas não toco o material por usuário, nem mesmo o usuário que está executando a configuração.
Seguido pela resposta de Keltari:
Existem muitas razões pelas quais este é o caso, no entanto, não é culpa da Microsoft ou do sistema operacional Windows.
A seguir está uma lista de alguns casos e motivos pelos quais as entradas do Registro são deixadas para trás:
Má programação - O desenvolvedor não gravou o desinstalador do aplicativo corretamente e as entradas do registro foram deixadas para trás. Além disso, o desinstalador pode não ter / usar as permissões apropriadas para remover as entradas do Registro. Também pode ser que haja mais de um aplicativo que use essas chaves. Por exemplo, dois aplicativos do mesmo desenvolvedor que gravam nas mesmas chaves.
Esquerda de propósito - Como um comentário mencionado, essas entradas poderiam ter sido deixadas de propósito. Alguns aplicativos têm um período de avaliação e, após esse período, você pode optar por remover o aplicativo. Se você optar por reinstalar o aplicativo posteriormente, essas chaves fornecerão informações sobre o aplicativo quando ele foi instalado. Além disso, alguns desenvolvedores podem optar por deixar essas chaves caso você decida reinstalar o aplicativo. Se o desenvolvedor usou as chaves do Registro para armazenar suas personalizações, elas podem deixá-las lá, de modo que, ao reinstalar o aplicativo, todas as personalizações sejam mantidas. No grande esquema das coisas, as chaves de registro ocupam apenas alguns bytes.
Você deve remover as chaves? Depende. O registro do Windows é um lugar perigoso para se mexer. Você pode inadvertidamente quebrar seu sistema. Deixar as chaves estranhas não prejudicará o sistema. Algumas pessoas vão dizer limpeza / desfragmentação do registro irá acelerar o seu sistema, mas isso foi provado falso repetidamente.
Se você realmente quer se livrar desses programas, existem algumas ferramentas de desinstalação que podem remover todos os vestígios de um programa. Esses programas assistirão ao instalador de outro programa e registrarão todas as ações executadas no sistema de arquivos e no registro, e removerão completamente essas ações. Um problema com essas ferramentas é que é possível remover coisas que você pode querer manter.
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.