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

20

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

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

Марк Боулдер
источник
3
Большая группа таких программ относится к пробным программам, которые имеют ограничение по времени, и после этого вы должны их купить. если они не оставили никаких следов в Windows, после окончания пробного периода вы можете просто удалить и переустановить программное обеспечение и сбросить пробный период. Разработчики действительно должны решить, как их программы должны действовать при удалении. Существуют программы и драйверы, которые полностью удаляются и удаляют все, что они добавляют при установке.
Conspiria

Ответы:

30

Потому что это невозможно.

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

Хотя хранить остатки в LocalMachine - это лень, как указывают другие ответы, очистка пользовательской части невозможна.

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

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

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

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

Допустим, у вас есть два терминальных сервера, на которых запущено одно приложение. Вы удаляете приложение на TS1, теперь все настройки для всех пользователей ушли на TS2, потому что у вас есть перемещаемые профили. упс.

То же самое относится и к файлам в пользовательских каталогах.

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

Лукас Ригер
источник
Кроме того, не забывайте, что удаление не обязательно означает полное избавление от приложения: иногда вы удаляете версию 1 приложения, а затем устанавливаете версию 2 того же приложения - вы не хотите терять все свои настройки в этом случае.
Стефан
19

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

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

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

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

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

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

Keltari
источник
Несмотря на то, что эти байты составляют «несколько байтов», они складываются. Это может привести к замедлению работы реестра при увеличении количества неиспользуемых записей. Вероятно, не относится к «типичному» пользователю, но у активных пользователей будет большая проблема. Вот почему было рекомендовано обновлять / переустанавливать Windows каждые 6-12 месяцев, чтобы поддерживать работоспособность системы. Такие программы, как CCleaner, могут дольше поддерживать систему за счет очистки остатков приложений.
phyrfox
3
@phyrfox, как указано в моем ответе, очистители реестра - змеиное масло. они не помогают вообще.
Келтари
1
В дни Win9x размер реестра имел значение, и многие устаревшие ключи замедляли работу ОС. Но это было давно, и NT NT отличилась. Хотя это иногда нужно исправить: Как
сжать «раздутые» кусты
10
@phyrfox: «Такие программы, как CCleaner, могут дольше поддерживать систему» ​​- нет. «Именно поэтому было рекомендовано обновлять / переустанавливать Windows каждые 6–12 месяцев, чтобы поддерживать систему в исправном состоянии». Это типично потому, что люди не знают, как заботиться о своих системах. Я сижу здесь и печатаю на 5-летней установке, которая интенсивно использовалась и заметного замедления не произошло. Именно такие рекомендации заставляют компании торговать змеиным маслом в бизнесе.
Каран
1
Да, реестр на самом деле довольно быстрый (а обычно используемые ульи и ключи обычно хранятся в памяти). Даже в былые времена самая большая проблема с «раздутым» реестром была связана с такими вещами, как расширения оболочки и HKCR - они вернулись сразу же, как только вы переустановили программное обеспечение, которое им предоставлялось. Прошло довольно много времени с тех пор, как я в последний раз переустанавливал ОС по соображениям «производительности» (все еще в Windows XP, а не в 7).
Луаан
0

Чтобы избавиться от оставшегося реестра, попробуйте использовать деинсталлятор IOBIT. Это, безусловно, лучший деинсталлятор. Кроме того, он бесплатный ... Я использую его все время ... У него есть мощная функция деинсталляции, которая идет прямо туда, куда оставленный ключ реестра, установите флажок, когда появится запрос, и ключи реестра будут удалены. Iobit поставляется с другими программами, просто используйте деинсталлятор, чтобы избавиться от них

newtobeingageektech
источник