Домашняя » как » Почему обычные программы удаления не могут удалить все соответствующие значения из реестра?

    Почему обычные программы удаления не могут удалить все соответствующие значения из реестра?

    Когда вы удаляете программу, вполне разумно ожидать, что все ее следы будут удалены из вашей системы, но часто это не так. Это почему? Сегодняшний пост SuperUser Q & A содержит ответы на любопытный вопрос читателя..

    Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..

    Снимок экрана любезно предоставлен WDS (Flickr).

    Вопрос

    Читатель SuperUser Марк Боулдер (Mark Boulder) хочет знать, почему некоторые значения реестра всегда остаются после обычной деинсталляции программного обеспечения:

    Расширение темы SuperUser Как мне удалить из реестра остаточные следы удаленного программного обеспечения, почему каждый раз, когда я удаляю программу, а потом просматриваю ее через RegEdit, она все еще там??

    Почему большинство приложений Windows так стремятся оставить крошечные следы себя в реестре? Это вина Windows или разработчиков??

    Почему значения реестра обычно «остаются» после обычной деинсталляции программного обеспечения?

    Ответ

    Участники SuperUser Лукас Ригер и Келтари ответят за нас. Прежде всего, Лукас Ригер:

    Потому что это невозможно. В реестре есть несколько корневых узлов, но только два интересных: LocalMachine и CurrentUser. Обычно установка записывает значения в LocalMachine, а работающая программа записывает только в CurrentUser (на самом деле, если установка не смешивается с разрешениями, работающая программа не может записывать в LocalMachine).

    Хотя хранить остатки в LocalMachine - это лень (как указано в других ответах), очистить часть CurrentUser невозможно.

    Если программа установлена ​​на машину (а большинство из них) и ее используют несколько пользователей, что должен делать деинсталлятор? Он может безопасно удалить пользовательские настройки текущей учетной записи, но текущая учетная запись может не являться вашей учетной записью. Это происходит, если вы запустили деинсталлятор из учетной записи, не являющейся администратором, а затем ввели учетные данные учетной записи администратора, установка теперь выполняется под этой учетной записью, а не первой..

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

    Но вы не должны даже пытаться это сделать. Если вы используете перемещаемые профили (то есть терминальные службы), а затем удаляете все параметры при удалении, вы можете действительно испортить и удалить материал, который фактически все еще используется. Терминальный сервер - это, по сути, один компьютер с Windows, на котором несколько пользователей одновременно входят в систему и используют приложения. Допустим, у вас есть два терминальных сервера, на которых запущено одно приложение. Вы удаляете приложение на TS1, теперь все настройки для всех пользователей ушли на TS2, потому что у вас есть перемещаемые профили. ой.

    То же самое относится и к файлам в пользовательских каталогах. В настройках программ моей компании я удаляю данные для каждого компьютера, но не затрагиваю данные для каждого пользователя, даже пользователя, который в данный момент запускает установку.

    Далее следует ответ Келтари:

    Есть много причин, почему это так, но это не вина Microsoft или операционной системы Windows.

    Ниже приведен список некоторых случаев и причин, по которым записи реестра остаются позади:

    Плохое программирование - Разработчик не написал деинсталлятор приложения должным образом, и записи реестра остались позади. Кроме того, деинсталлятор может не иметь / использовать надлежащие разрешения для удаления записей реестра. Возможно также, что существует несколько приложений, использующих эти ключи. Например, два приложения от одного разработчика, которые пишут в одни и те же ключи.

    Оставил на цель - Как упоминалось в одном комментарии, эти записи можно было оставить намеренно. У некоторых приложений есть пробный период, и после этого периода вы можете удалить приложение. Если вы решите переустановить приложение позже, эти ключи предоставляют информацию о приложении, когда оно было установлено. Кроме того, некоторые разработчики могут оставить эти ключи на случай, если вы решите переустановить приложение. Если разработчик использовал ключи реестра для хранения ваших настроек, они могут оставить их там, чтобы при переустановке приложения все ваши настройки сохранялись. По большому счету, ключи реестра занимают всего несколько байтов.

    Вы должны удалить ключи? Это зависит от. Реестр Windows - это опасное место, где можно бездельничать. Вы можете случайно сломать вашу систему. Оставление посторонних ключей не повредит системе. Некоторые люди скажут, что очистка / дефрагментация реестра ускорит вашу систему, но это неоднократно подтверждалось ложным.

    Если вы действительно хотите избавиться от этих программ, есть несколько инструментов удаления, которые могут удалить все следы программы. Эти программы будут наблюдать установщик другой программы и записывать все действия, выполненные в файловой системе и реестре, а затем полностью удалять эти действия. Одна из проблем этих инструментов заключается в том, что они могут удалять вещи, которые вы, возможно, захотите оставить..


    Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.