Чому звичайне програмне забезпечення видаляє всі релевантні значення з реєстру?
Коли ви видаляєте програму, це "розумне" сподівання, що всі сліди її будуть видалені з вашої системи, але це часто не так. Чому так? Сьогоднішня посада SuperUser Q&A має відповіді на запитання цікавого читача.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Знімок екрану надано wandersick (Flickr).
Питання
Читач SuperUser Mark Boulder хоче знати, чому деякі значення реєстру завжди залишаються після звичайного видалення програмного забезпечення:
Розширення на тему SuperUser Як видалити залишки слідів невстановленого програмного забезпечення з реєстру, чому це кожен раз, коли я видаляю програму, а потім пізніше переглядаю її через RegEdit, вона все ще існує?
Чому більшість додатків Windows так намагаються залишити маленькі сліди себе в реєстрі? Чи винна лежить у Windows або з розробниками?
Чому значення реєстру зазвичай «залишаються» після звичайного видалення програмного забезпечення?
Відповідь
Співробітники SuperUser Lukas Rieger і Keltari мають відповідь для нас. Спочатку Лукас Рігер:
Тому що це неможливо. Реєстр має декілька кореневих вузлів, але лише два цікавих: LocalMachine і CurrentUser. Як правило, налаштування записує значення до LocalMachine, а запущена програма записується лише до CurrentUser (насправді, якщо налаштування не зіткнулися з дозволами, запущена програма не може записувати в LocalMachine).
При збереженні залишків у програмі LocalMachine є лінощім (як зазначено іншими відповідями), неможливо очистити частину CurrentUser.
Якщо програма встановлена на кожну машину (більшість з них), і численні користувачі її використовують, що слід робити деінсталятору? Він може безпечно видалити налаштування користувача поточного облікового запису, але поточний обліковий запис може бути не вашим обліковим записом. Це відбувається, якщо ви видалили програму видалення з облікового запису, відмінного від адміністратора, а потім ввели облікові дані адміністративного облікового запису, налаштування тепер запущено під цим обліковим записом, а не першим.
А як щодо інших користувачів? Він може спробувати перерахувати всіх користувачів, але їхні ключі реєстру не завантажуються (Windows ледачий і завантажує лише ті речі, які йому потрібні).
Але ви не повинні навіть намагатися. Якщо ви використовуєте роумінг-профілі (тобто термінальні служби), а потім вилучите всі налаштування для видалення, ви можете дійсно зіпсувати і видалити речі, які фактично все ще використовуються. Термінальний сервер - це в основному одна машина Windows, де одночасно входять декілька користувачів і використовують програми. Скажімо, у вас є два термінальних сервера, на яких запущено одну програму. Ви видалите програму на TS1, тепер всі налаштування для всіх користувачів відсутні на TS2, оскільки у вас є роумінг-профілі. На жаль.
Те ж саме стосується і файлів у каталогах кожного користувача. При налаштуванні програм моєї компанії я видаляю матеріал за кожну машину, але не торкаюся матеріалу, призначеного для кожного користувача, навіть не для користувача, який зараз виконує налаштування.
Далі йде відповідь з Келтарі:
Є багато причин, чому це так, однак, це не вина Microsoft або операційної системи Windows.
Нижче наведено список деяких випадків і причин, з яких залишилися записи реєстру:
Неправильне програмування - Розробник не написав належним чином програму видалення, а записи реєстру залишилися позаду. Крім того, програма видалення може не мати / використовувати належні дозволи для видалення записів реєстру. Також може бути, що існує більше однієї програми, яка використовує ці ключі. Наприклад, дві програми від одного розробника, які записують на ті ж ключі.
Ліворуч на ціль - Як згадувалося одним коментарем, ці записи могли бути залишені навмисне. Деякі програми мають пробний період, після чого ви можете видалити програму. Якщо ви вирішите переінсталювати програму пізніше, ці ключі нададуть інформацію про програму, коли вона буде інстальована. На додаток до цього, деякі розробники можуть залишити ці ключі у разі перевстановлення програми. Якщо розробник використовував ключі реєстру для зберігання ваших налаштувань, вони могли б залишити їх там, щоб при переінсталюванні програми всі ваші налаштування зберігалися. У великій схемі речей ключі реєстру займають лише кілька байт.
Ви повинні видалити ключі? Це залежить. Реєстр Windows є небезпечним місцем, де можна заплутатися. Ви можете ненавмисно зламати вашу систему. Залишення сторонніх ключів не зашкодить системі. Деякі люди скажуть, що очищення / дефрагментація реєстру прискорить вашу систему, але це неодноразово було доведено помилково.
Якщо ви дійсно хочете позбутися цих програм, є деякі засоби видалення, які можуть видалити всі сліди програми. Ці програми будуть спостерігати за інсталятором іншої програми і записувати всі дії, зроблені в файлову систему і реєстр, а потім повністю видалити ці дії. Одна проблема з цими інструментами полягає в тому, що вони можуть видалити речі, які ви захочете зберегти.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.