Защо Нормалният софтуер деинсталира да не премахне всички съответни стойности от регистъра?
Когато деинсталирате програма, това е "разумно" очакване всички следи от нея да бъдат премахнати от системата ви, но това често не е така. Защо така? Днешната публикация за въпроси и отговори SuperUser има отговори на един любопитен въпрос на читателя.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Снимка на екрана, предоставена от wandersick (Flickr).
Въпроса
Четецът на суперпотребител Марк Боулдър иска да знае защо някои стойности на системния регистър винаги остават след нормално деинсталиране на софтуера:
Разширяване на темата SuperUser Как да премахна остатъчните следи от деинсталирания софтуер от системния регистър, защо е, че всеки път, когато деинсталирам програма и след това я погледна през RegEdit, тя все още е там?
Защо повечето приложения на Windows се стремят да оставят малки следи от себе си в системния регистър? Има ли вина за Windows или за разработчиците?
Защо стойностите на системния регистър обикновено са „оставени“ след нормално деинсталиране на софтуера?
Отговорът
Сътрудниците на SuperUser Lukas Rieger и Keltari имат отговор за нас. Първо, Лукас Ригер:
Защото е невъзможно. Регистърът има множество коренни възли, но само два интересни: LocalMachine и CurrentUser. Обикновено настройката записва стойности в LocalMachine и текущата програма записва само в CurrentUser (всъщност, освен ако настройката не попречи на разрешенията, текущата програма не може да записва в LocalMachine).
При запазване на остатъците в LocalMachine е мързел (както е посочено от другите отговори), не е възможно да се почисти частта CurrentUser.
Ако дадена програма е инсталирана на машина (която повечето са) и много потребители я използват, какво трябва да направи деинсталаторът? Тя може безопасно да премахне потребителските настройки на текущия профил, но текущият профил може да не е вашият профил. Това се случва, ако сте стартирали програмата за деинсталиране от профил, който не е администратор, и след това сте въвели идентификационните данни на администраторски профил, настройката вече се изпълнява под този профил, а не първата.
Ами другите потребители? Може да се опита да изброи всички потребители, но техните ключове в системния регистър може да не са заредени (Windows е мързелив и зарежда само нещата, от които се нуждае).
Но не трябва дори да се опитвате. Ако използвате роуминг профили (т.е. терминални услуги) и след това изтриете всички настройки за деинсталиране, наистина можете да объркате и изтриете неща, които всъщност все още се използват. Терминален сървър е основно една машина на Windows, в която много потребители влизат в системата по едно и също време и използват приложения. Да кажем, че имате два терминални сървъра, изпълняващи едно приложение. Деинсталирате приложението на TS1, сега всички настройки за всички потребители са отишли на TS2, защото имате роуминг профили. Oops.
Същото важи и за файловете в директориите на потребителите. При настройката на програмите на моята фирма изтривам неща на машина, но не се докосвам до неща за всеки потребител, дори и за потребителя, който изпълнява настройката.
Следван от отговора от Keltari:
Има много причини, поради които това е така, но това не е по вина на Microsoft или операционната система Windows.
По-долу е даден списък на някои случаи и причини, поради които записите в регистъра са оставени:
Лошо програмиране - Разработчикът не е написал правилно приложението за деинсталиране и записите в системния регистър са оставени. В допълнение към това, деинсталиращият може да няма / използва правилните разрешения за премахване на записите в системния регистър. Може също така да има повече от едно приложение, което използва тези ключове. Например две приложения от един и същ разработчик, които пишат на едни и същи ключове.
Наляво на целта - Както беше споменато в един коментар, тези записи можеха да бъдат оставени нарочно. Някои приложения имат пробен период и след този период можете да изберете да премахнете приложението. Ако решите да инсталирате по-късно приложението, тези клавиши дават информация за приложението, когато е инсталирана. В допълнение към това, някои разработчици могат да изберат да оставят тези ключове в случай, че решите да преинсталирате приложението. Ако разработчикът е използвал ключове в системния регистър, за да съхранява вашите персонализации, може да ги остави там, така че когато преинсталирате приложението, всичките ви персонализации ще продължат да съществуват. В голямата схема на нещата ключовете в регистъра заемат само няколко байта.
Трябва ли да извадите ключовете? Това зависи. Регистърът на Windows е опасно място за бъркотия. Можете по невнимание да нарушите системата си. Оставянето на външните ключове няма да навреди на системата. Някои хора ще кажат, че почистването / дефрагментирането на регистъра ще ускори вашата система, но това е доказано некоректно некоректно.
Ако наистина искате да се отървете от тези програми, има някои инструменти за деинсталиране, които могат да премахнат всяка следа от програмата. Тези програми ще гледат инсталатора на друга програма и ще записват всички действия, извършени във файловата система и регистъра, след което напълно ще премахнат тези действия. Един от проблемите с тези инструменти е, че е възможно те да премахнат нещата, които може да искате да запазите.
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.