Varför avinstallerar normal programvara misslyckas att ta bort alla relevanta värden från registret?
När du avinstallerar ett program är det en "rimlig" förväntan att alla spår av det kommer att tas bort från ditt system, men det är ofta inte fallet. Varför är det så? Dagens SuperUser Q & A-inlägg har svaren på en nyfiken läsarens fråga.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Skärmdump med tillstånd av wandersick (Flickr).
Frågan
SuperUser-läsaren Mark Boulder vill veta varför vissa registreringsvärden alltid är kvar efter att en vanlig programvara avinstallerats:
Expandera på SuperUser-ämnet Hur tar jag bort resterande spår av avinstallerad programvara från registret, varför är det att varje gång jag avinstallerar ett program och senare ser det upp via RegEdit, är det fortfarande kvar?
Varför är de flesta Windows-programmen så avsedda att lämna små lilla spår av sig själva i registret? Finns felet med Windows eller med utvecklarna?
Varför är registervärden vanligen "kvar" efter att du vanligtvis avinstallerar programvaran?
Svaret
SuperUser-bidragsgivare Lukas Rieger och Keltari har svaret för oss. Först upp, Lukas Rieger:
Eftersom det är omöjligt. Registret har flera root noder men bara två intressanta: LocalMachine och CurrentUser. Normalt skriver inställningen värden i LocalMachine, och det körprogrammet skriver bara till CurrentUser (faktiskt, om inte installationen klarar med behörigheterna, kan det pågående programmet inte skriva till LocalMachine).
Medan du håller kvar i LocalMachine är latskap (som påpekats av de andra svaren), är det inte möjligt att rengöra CurrentUser-delen.
Om ett program installeras per maskin (som de flesta är) och flera användare använder det, vad ska avinstallatören göra? Det kan säkert ta bort användarinställningarna för det aktuella kontot, men det aktuella kontot kanske inte är ditt konto. Detta händer om du startade avinstallationsprogrammet från ett icke-administratörskonto och sedan inloggade ett administratörskonto, är installationen nu under det kontot, inte det första.
Vad sägs om de andra användarna? Det kan försöka räkna upp alla användare, men deras registernycklar kanske inte laddas (Windows är lat och laddar bara de saker den behöver).
Men du borde inte ens försöka det. Om du använder roamingprofiler (d.v.s. terminaltjänster) och sedan raderar alla inställningar vid avinstallation kan du verkligen förstöra och ta bort saker som faktiskt fortfarande används. En terminalserver är i princip en Windows-maskin där flera användare loggar in samtidigt och använder applikationer. Säg att du har två terminalservrar som kör en applikation. Du avinstallerar programmet på TS1, nu är alla inställningar för alla användare borta på TS2 eftersom du har roamingprofiler. Hoppsan.
Detsamma gäller även filer i användarkatalogerna. I inställningen av mitt företags program raderar jag per-maskinens saker, men berör inte användarnas saker, inte ens av den användare som för närvarande kör installationen.
Följd av svaret från Keltari:
Det finns många anledningar till varför det här är fallet, men det är inte felet från Microsoft eller Windows operativsystem.
Följande är en lista över vissa fall och anledningar till att registerposter lämnas kvar:
Dålig programmering - Utvecklaren skrev inte avinstallationsprogrammet korrekt och registerposter lämnas efter. Dessutom kan avinstalleraren inte ha / använda rätt behörighet för att ta bort registerposter. Det kan också vara att det finns fler än en applikation som använder dessa nycklar. Till exempel två applikationer från samma utvecklare som skriver till samma nycklar.
Vänster med syftet - Som en kommentar nämnts kunde dessa poster ha lämnats med syfte. Vissa program har en provperiod och efter den perioden kan du välja att ta bort programmet. Om du väljer att installera om programmet senare, ger dessa nycklar programinformationen när den installerades. Utöver det kan vissa utvecklare välja att lämna dessa nycklar om du väljer att installera om programmet. Om utvecklaren använde registernycklar för att lagra dina anpassningar kan de lämna dem så att när du installerar om programmet fortsätter alla dina anpassningar. I den stora ordningen av saker tar registernycklar bara upp några byte.
Ska du ta bort nycklarna? Det beror på. Windows-registret är en farlig plats att röra sig in i. Du kan oavsiktligt bryta ditt system. Om du lämnar de externa tangenterna skadas inte systemet. Vissa människor kommer att säga att rengöra / defragga registret kommer att påskynda ditt system, men det har visat sig vara felaktigt upprepade gånger.
Om du verkligen vill bli av med dessa program finns det några avinstalleringsverktyg som kan ta bort alla spår av ett program. Dessa program kommer att titta på installationsprogrammet för ett annat program och spela in alla åtgärder som gjorts för filsystemet och registret, och ta bort de här åtgärderna helt. Ett problem med dessa verktyg är att det är möjligt att de kan ta bort saker som du kanske vill behålla.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.