Есть ли софт, который безвозвратно и полностью удаляет программы из системы? Или как это делать правильно самому? Как найти все файлы, которые относятся к той или иной программе и при этом не затронуть системные файлы?
Да, есть: Ashampoo UnInstaller - делает снимок системы перед установкой, потом после установки и запуска приложения (иногда при запуске приложение может создавать дополнительные файлы) и в результате известны все изменения в системе. И таким образом можно полностью убрать все изменения в системе.
В общем случае - никак (если не считать как вариант - создание полного снимка системы перед установкой)
Деинсталлятор должен это делать сам.
Если деинсталлятор удаляет не всё - значит это баг и нужно сообщить об этом разработчику программы.
Не, в реестре многие программы оставляют кучу всего. Иногда это даже удобно, что заново при переустановке серийник не надо вводить, но чаще это бесполезный мусор, который хранится в реестре.