10Aug

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? Astăzi, postul SuperUser Q & A are răspunsurile la o întrebare curioasă a cititorului.

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

Screenshot-ul este multumit de wandersick( Flickr).

Întrebare Întrebarea

SuperUser cititorul Mark Boulder vrea să știe de ce unele valori de registry rămân întotdeauna după o dezinstalare obișnuită a software-ului:

Extinderea subiectului SuperUser Cum pot elimina urmele reziduale ale software-ului dezinstalat din registru, de ce este de fiecare dată când dezinstalezun program și apoi caută mai târziu prin RegEdit, este încă acolo?

De ce majoritatea aplicațiilor Windows sunt atât de intenționate încât să lase urme mici în registru? Se întâmplă vina cu Windows sau cu dezvoltatorii?

De ce sunt valorile de registru de obicei "lăsate în urmă" după dezinstalarea software-ului în mod normal?

Răspunsurile

Contribuitorii 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 setările au permisiuni, programul care rulează nu poate scrie în LocalMachine).

În timp ce păstrați resturile în LocalMachine este lenea( după cum se arată în 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 conectare ale unui cont de administrator, configurarea fiind executată acum în contul respectiv, și nu în primul cont.

Ce se întâmplă 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ă încercați 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 practic o mașină Windows în care mai mulți utilizatori se conectează în același timp ș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 dispărut pe 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 atingeți chestiile per-utilizator, nici măcar pe utilizatorul care execută configurarea.

Urmat de răspunsul dat de Keltari:

Există multe motive pentru care acest lucru este cazul, totuși nu este vina Microsoft sau a sistemului de operare Windows.

Următoarea este o listă a câtorva cazuri și motivele pentru care înregistrările de registru sunt lăsate în urmă:

Programarea defectuoasă - 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 aceleași chei.

Stânga în scop - După cum sa 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âțiva 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ă rupeț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, 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 ați putea dori să le păstrați.

Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.