Waarom kunnen standaard software-verwijderingsprogramma's niet alle relevante waarden uit het register verwijderen?
Wanneer u een programma verwijdert, is het een "redelijke" verwachting dat alle sporen ervan uit uw systeem worden verwijderd, maar dat is vaak niet het geval. Waarom is dat? De SuperUser Q & A-post van vandaag biedt de antwoorden op de vraag van een nieuwsgierige lezer.
De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.
Screenshot met dank aan wandersick (Flickr).
De vraag
SuperUser-lezer Mark Boulder wil weten waarom sommige registerwaarden altijd blijven bestaan na een normale verwijdering van de software:
Uitbreiden van het SuperUser-onderwerp Hoe verwijder ik de resterende sporen van niet-geïnstalleerde software uit het register, waarom komt het dat elke keer dat ik een programma verwijder en later opzoek via RegEdit, het er nog steeds is?
Waarom zijn de meeste Windows-applicaties zo gericht op het achterlaten van piepkleine sporen van zichzelf in het register? Ligt de fout bij Windows of bij de ontwikkelaars?
Waarom worden registerwaarden meestal "achtergelaten" na het normaal verwijderen van software??
Het antwoord
SuperUser-medewerkers Lukas Rieger en Keltari hebben het antwoord voor ons. Ten eerste, Lukas Rieger:
Omdat het onmogelijk is. Het register heeft meerdere root-nodes, maar slechts twee interessante: LocalMachine en CurrentUser. Normaal schrijft de setup waarden in LocalMachine en het lopende programma schrijft alleen in CurrentUser (in feite, tenzij de setup knoeit met de permissies, kan het lopende programma niet schrijven naar LocalMachine).
Terwijl het houden van overblijfselen in LocalMachine luiheid is (zoals opgemerkt door de andere antwoorden), is het niet mogelijk om het CurrentUser-deel te reinigen.
Als een programma per machine wordt geïnstalleerd (wat de meeste zijn) en meerdere gebruikers het gebruiken, wat moet het verwijderprogramma dan doen? Het kan de gebruikersinstellingen van het huidige account veilig verwijderen, maar het huidige account is mogelijk niet uw account. Dit gebeurt als u het verwijderingsprogramma hebt gestart vanuit een niet-beheerdersaccount en vervolgens de inloggegevens van een beheerdersaccount hebt ingevoerd. De instellingen worden nu uitgevoerd onder dat account, niet het eerste account.
Hoe zit het met de andere gebruikers? Het zou kunnen proberen om alle gebruikers op te sommen, maar hun registersleutels zijn mogelijk niet geladen (Windows is lui en laadt alleen de dingen die het nodig heeft).
Maar dat zou je niet eens moeten proberen. Als u zwervende profielen (dat wil zeggen terminaldiensten) gebruikt en vervolgens alle instellingen verwijdert bij het ongedaan maken van de installatie, kunt u echt dingen verprutsen en verwijderen die nog steeds in gebruik zijn. Een terminalserver is in feite één Windows-computer waarop meerdere gebruikers tegelijkertijd kunnen inloggen en applicaties kunnen gebruiken. Stel dat u twee terminalservers hebt waarop één toepassing wordt uitgevoerd. U verwijdert de toepassing op TS1, nu zijn alle instellingen voor alle gebruikers verdwenen op TS2 omdat u zwervende profielen hebt. Oops.
Hetzelfde geldt ook voor bestanden in de mappen per gebruiker. Bij het instellen van de programma's van mijn bedrijf verwijder ik de dingen per computer maar raak de dingen per gebruiker niet aan, zelfs niet van de gebruiker die momenteel de installatie uitvoert.
Gevolgd door het antwoord van Keltari:
Er zijn veel redenen waarom dit het geval is, maar het is niet de schuld van Microsoft of het Windows-besturingssysteem.
Hierna volgt een lijst met enkele gevallen en redenen waarom registervermeldingen zijn achtergelaten:
Slechte programmering - De ontwikkelaar heeft het verwijderingsprogramma van de toepassing niet correct geschreven en de registervermeldingen zijn achtergelaten. In aanvulling daarop heeft het verwijderprogramma mogelijk niet de juiste machtigingen om de registervermeldingen te verwijderen. Het kan ook zijn dat er meer dan één applicatie is die deze sleutels gebruikt. Bijvoorbeeld twee applicaties van dezelfde ontwikkelaar die naar dezelfde sleutels schrijven.
Links Op Doel - Zoals een opmerking vermeldde, hadden deze vermeldingen met opzet kunnen worden achtergelaten. Sommige toepassingen hebben een proefperiode en na die periode kunt u ervoor kiezen om de toepassing te verwijderen. Als u ervoor kiest om de toepassing later opnieuw te installeren, geven deze sleutels de toepassingsinformatie door wanneer deze is geïnstalleerd. Daarnaast kunnen sommige ontwikkelaars ervoor kiezen om deze sleutels achter te laten in het geval u ervoor kiest om de applicatie opnieuw te installeren. Als de ontwikkelaar registersleutels heeft gebruikt om uw aanpassingen op te slaan, kunnen deze ze daar achterlaten, zodat alle aanpassingen blijven bestaan wanneer u de toepassing opnieuw installeert. In het grote schema van dingen nemen registersleutels slechts een paar bytes in beslag.
Moet je de sleutels verwijderen? Dat hangt ervan af. Het Windows-register is een gevaarlijke plaats om in te rotzooien. Je kunt per ongeluk je systeem kapot maken. Het achterlaten van de externe toetsen zal het systeem niet beschadigen. Sommige mensen zullen zeggen dat het opschonen / defragmenteren van het register je systeem zal versnellen, maar dat is herhaaldelijk onjuist gebleken.
Als u echt van die programma's af wilt zijn, zijn er enkele hulpprogramma's voor het verwijderen van programma's die elk spoor van een programma kunnen verwijderen. Deze programma's zullen het installatieprogramma van een ander programma bekijken en alle uitgevoerde acties registreren in het bestandssysteem en het register en deze acties vervolgens volledig verwijderen. Een probleem met deze hulpprogramma's is dat het mogelijk is dat ze dingen verwijderen die u mogelijk wilt behouden.
Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.