Бо це неможливо.
У реєстрі є кілька кореневих вузлів, але лише два цікавих: LocalMachine та CurrentUser . Зазвичай програма записує значення в LocalMachine, а запущена програма ТІЛЬКО записує в CurrentUser (насправді, якщо інсталяція не змішається з правами , запущена програма не може записати в LocalMachine.)
Якщо зберігати залишки в LocalMachine - це лінь, на що вказують інші відповіді, неможливо очистити частину користувача.
Якщо програма встановлена на кожній машині (яка є більшою частиною) і її використовують декілька користувачів, що робити з видаленням програми? Він може безпечно видалити налаштування користувача поточного облікового запису, але поточний рахунок може бути не вашим. (Це трапляється, якщо ви запустили деінсталятор з облікового запису, який не є адміністратором, а потім ввели облікові дані адміністраторського облікового запису - налаштування зараз працює під цим обліковим записом, а не з першого).
Що з іншими користувачами? Він може спробувати перерахувати всіх користувачів, але їх реєстрові ключі можуть не бути завантажені. (Windows ледачий і завантажує лише потрібні речі.)
Але ви навіть не повинні намагатися цього. Якщо ви користуєтеся роумінговими профілями, наприклад, для термінальних служб, а потім видалите всі налаштування під час видалення, ви дійсно можете зіпсувати та видалити речі, які фактично все ще використовуються.
Термінальний сервер - це в основному одна машина Windows, де одночасно входять декілька користувачів та використовують програми.
Скажімо, у вас є два термінальні сервери, на яких працює одна програма. Ви видаляєте програму на TS1, тепер всі налаштування для всіх користувачів перейшли на TS2, оскільки у вас є роумінгові профілі. ой.
Те саме стосується файлів у каталогах користувачів.
Під час налаштування програми моїх компаній я видаляю деталі для кожної машини, але не торкаюсь даних про кожного користувача, навіть не того користувача, який зараз виконує налаштування.