If-Koubou

Защо нормалният софтуер за деинсталиране не успее да премахне всички съответни стойности от регистъра?

Защо нормалният софтуер за деинсталиране не успее да премахне всички съответни стойности от регистъра? (Как да)

Когато деинсталирате програма, това е "разумно" очакване, че всички следи от нея ще бъдат премахнати от вашата система, но това често не е така. Защо така? Днешната публикация "SuperUser Q & A" има отговорите на въпроса на любознателен читател.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Скрийншотът е предоставен от wandersick (Flickr).

Въпроса

Четецът на SuperUser Марк Боулдър иска да разбере защо някои стойности на системния регистър винаги остават след нормален софтуер за деинсталиране:

Разширяване на темата за SuperUser Как да премахна остатъчните следи от неинсталиран софтуер от системния регистър, защо всеки път, когато деинсталирам програма и след това я потърся в RegEdit, все още е там?

Защо по-голямата част от приложенията за Windows са толкова загрижени, че оставят мъничко малко следи от себе си в регистъра? Лошо ли е грешката с Windows или с програмистите?

Защо стойностите на системния регистър обикновено са "изоставени" след нормалното деинсталиране на софтуера?

Отговорът

Служителите на SuperUser Lukas Rieger и Keltari имат отговор за нас. Първо, Лукас Рийгър:

Защото това е невъзможно. Регистърът има няколко коренни възела, но само две интересни: LocalMachine и CurrentUser. Обикновено инсталацията записва стойности в LocalMachine и текущата програма записва само в CurrentUser (всъщност, ако настройката не се изпълни с разрешения, текущата програма не може да пише в LocalMachine).

Докато запазвате остатъците в LocalMachine е мързел (както е посочено от другите отговори), не е възможно да почистите CurrentUser частта.

Ако една програма е инсталирана на машина (която е най-много) и няколко потребители я използват, какво трябва да направи деинсталиращото устройство? Тя може безопасно да премахне потребителските настройки на текущия акаунт, но текущият акаунт може да не е вашият акаунт. Това се случва, ако сте стартирали деинсталиращото устройство от не-администраторски акаунт и след това сте въвели идентификационните данни на администраторски акаунт, настройката вече се изпълнява под този акаунт, а не първата.

Ами останалите потребители? Може да се опита да изброи всички потребители, но техните ключове в системния регистър може да не бъдат заредени (Windows е мързелив и само зарежда нещата, от които се нуждае).

Но вие дори не трябва да опитате това. Ако използвате роуминг профили (т.е. терминални услуги) и след това изтриете всички настройки при деинсталирането, може наистина да объркате и да изтриете неща, които всъщност все още се използват. Терминалният сървър е основно една машина на Windows, в която няколко потребители влизат едновременно и използват приложения. Кажете, че имате два терминални сървъра, изпълняващи едно приложение. Деинсталирате приложението на TS1, сега всички настройки за всички потребители са изчезнали в TS2, защото имате профили в роуминг. Ами сега.

Същото важи и за файловете в директорията за потребители. При инсталирането на програмите на моята фирма изтривам всички неща на машината, но не докосвайте съдържанието на потребител, дори и на потребителя, който в момента изпълнява настройката.

Следва отговор от Keltari:

Има много причини, поради които това е така, но не е по вина на Microsoft или на операционната система Windows.

По-долу е даден списък на някои случаи и причини, поради които записите в системния регистър са оставени зад:

Лошо програмиране - Разработчикът не е написал правилно програмата за деинсталиране на приложението и записите в системния регистър са оставени назад. Освен това е възможно деинсталаторът да няма / да използва правилните разрешения за премахване на записите в системния регистър. Възможно е също така да има повече от едно приложение, което използва тези ключове. Например две приложения от същия програмист, които пишат на едни и същи клавиши.

Ляво за целта - Както споменахме в един коментар, тези записи биха могли да бъдат оставени накрая. Някои приложения имат пробен период и след този период можете да изберете да премахнете приложението. Ако изберете да преинсталирате приложението по-късно, тези клавиши дават на приложението информация за това кога е била инсталирана. В допълнение към това, някои програмисти може да изберат да оставят тези ключове, в случай че решите да инсталирате отново приложението. Ако разработчикът използва ключовете на системния регистър, за да съхранява персонализирането ви, може да ги остави там, така че при преинсталиране на приложението, всичките ви персонализации да продължат. В голямата схема на нещата, ключът на системния регистър само заема няколко байта.

Трябва ли да премахнете ключовете? Това зависи. Регистърът на Windows е опасно място, където да се забъркате. Можете неволно да я разкъсате. Оставянето на външните клавиши няма да навреди на системата. Някои хора ще кажат, че почистването / дефрагментирането на системния регистър ще ускори системата ви, но това неведнъж е доказано невярно.

Ако наистина искате да се отървете от тези програми, има някои инструменти за деинсталиране, които могат да премахнат всяка следа от програма. Тези програми ще гледат инсталатора на друга програма и ще записват всички действия, извършени към файловата система и регистъра, след което напълно ще премахнат тези действия. Един от проблемите с тези инструменти е, че е възможно те да могат да премахнат нещата, които може да искате да запазите.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.