De ce software-urile de dezinstalare normală nu reușesc să elimine toate valorile relevante din registru?
Când dezinstalați un program, este o așteptare "rezonabilă" că toate urmele din acesta vor fi eliminate din sistemul dvs., dar acest lucru nu este adesea cazul. De ce este asta? Postul de astăzi SuperUser Q & A are răspunsurile la o întrebare curioasă a cititorului.
Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.
Captură de ecran de la wandersick (Flickr).
Intrebarea
Cititorul SuperUser Mark Boulder dorește să știe de ce unele valori ale registrului rămân întotdeauna după dezinstalarea software-ului obișnuit:
Extinderea subiectului SuperUser Cum pot elimina urme reziduale ale software-ului dezinstalat din registru, de ce este faptul că de fiecare dată când dezinstalez un program și apoi îl caut mai târziu prin RegEdit, acesta este încă acolo?
De ce majoritatea aplicațiilor Windows sunt atât de intenționate încât să lase urme mici în registru? Greșeala se află la Windows sau la dezvoltatori?
De ce valorile de registru sunt de obicei "lăsate în urmă" după dezinstalarea software-ului în mod normal?
Răspunsul
Contribuitorii la SuperUser Lukas Rieger și Keltari au răspunsul pentru noi. În primul rând, Lukas Rieger:
Pentru că este imposibil. Registrul are mai multe noduri rădăcină, dar numai două interesante: LocalMachine și CurrentUser. În mod normal, setarea scrie valori în LocalMachine, iar programul care rulează scrie numai în CurrentUser (de fapt, cu excepția cazului în care confruntările de configurare cu permisiunile, programul care rulează nu poate scrie în LocalMachine).
În timp ce păstrați resturile în LocalMachine este lenea (după cum a subliniat și celelalte răspunsuri), nu este posibilă curățarea părții CurrentUser.
Dacă un program este instalat pe o mașină (care este cea mai mare parte) și pe care o folosesc mai mulți utilizatori, ce ar trebui să facă programul de dezinstalare? Ar putea elimina în siguranță setările de utilizator ale contului curent, dar este posibil ca contul curent să nu fie contul dvs. Acest lucru se întâmplă dacă ați pornit programul de dezinstalare dintr-un cont non-administrator și apoi ați introdus datele de identificare ale unui cont de administrator, configurarea fiind executată acum în contul respectiv, și nu în primul cont.
Cum rămâne cu ceilalți utilizatori? S-ar putea încerca să enumere toți utilizatorii, dar cheile lor de registry ar putea să nu fie încărcate (Windows este leneș și doar încarcă lucrurile de care are nevoie).
Dar nici nu ar trebui să încerci asta. Dacă utilizați profiluri de roaming (adică servicii de terminale) și apoi ștergeți toate setările de dezinstalare, ați putea să vă faceți rău și să ștergeți lucruri care sunt încă în uz. Un server terminal este în esență o mașină Windows în care mai mulți utilizatori se conectează simultan și utilizează aplicații. Spuneți că aveți două servere terminale care rulează o aplicație. Dezinstalați aplicația pe TS1, acum toate setările pentru toți utilizatorii au plecat în TS2 deoarece aveți profiluri în roaming. Hopa.
Același lucru se aplică și fișierelor din directoarele per-utilizator. În configurarea programelor companiei mele, șterg chestiile per-mașină, dar nu ating chestiile per-utilizator, nici măcar pe utilizatorul care execută configurarea în mod curent.
Urmat de răspunsul dat de Keltari:
Există multe motive pentru care acest lucru este cazul, însă nu este o vină a Microsoft sau a sistemului de operare Windows.
Următoarea este o listă a câtorva cazuri și motivele pentru care înregistrările de registry sunt lăsate în urmă:
Programarea incorectă - Dezvoltatorul nu a scris programul de dezinstalare a aplicației în mod corespunzător, iar înregistrările din registry sunt lăsate în urmă. În plus, este posibil ca programul de dezinstalare să nu aibă / să utilizeze permisiunile corespunzătoare pentru a elimina intrările din registry. Ar putea fi, de asemenea, că există mai multe aplicații care utilizează acele chei. De exemplu, două aplicații de la același dezvoltator care scriu pe aceleași chei.
Stânga în scop - După cum a menționat un comentariu, aceste intrări ar fi putut fi lăsate în scop. Unele aplicații au o perioadă de încercare și, după acea perioadă, puteți alege să eliminați aplicația. Dacă alegeți să reinstalați aplicația mai târziu, acele chei furnizează informații despre aplicație când a fost instalată. În plus, unii dezvoltatori ar putea alege să părăsească aceste chei în cazul în care alegeți să reinstalați aplicația. Dacă dezvoltatorul folosește cheile de registru pentru a stoca personalizările dvs., le-ar putea lăsa acolo, astfel încât atunci când reinstalați aplicația, toate personalizările dvs. persistă. În marea schemă a lucrurilor, cheile de registru ocupă doar câteva octeți.
Ar trebui să scoateți cheile? Depinde. Registrul Windows este un loc periculos pentru a vă mizeria înăuntru. Puteți să vă întrerupeți din greșeală sistemul. Lăsarea cheilor externe nu va afecta sistemul. Unii oameni vor spune că curățarea / defragmentarea regiștrilor va accelera sistemul dvs., dar acest lucru a fost dovedit în mod repetat fals.
Dacă chiar vrei să scapi de aceste programe, există niște unelte de dezinstalare care pot elimina fiecare urmă a unui program. Aceste programe vor viziona programul de instalare al unui alt program și vor înregistra toate acțiunile efectuate la sistemul de fișiere și registru, apoi vor elimina complet aceste acțiuni. O problemă cu aceste instrumente este că este posibil să elimine lucrurile pe care ar trebui să le păstrați.
Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.