Is there a way to detect which changes a program makes to your computer? Like new files created, registry changes, anything like that?
You can do this using Process Monitor.
Back in the day, winpooch used to do this, but this stopped working with XP SP2.
Trackwininstall would work for this in theory - the website's in german but they link to a google translated english version, I'm away from my test systems so I haven't tried it out yet
Some uninstallers may do this as part of the uninstall process - revo uninstaller's professional version may do this as part of its real time installation manager.
You could also use procmon, as Tom suggested to monitor filesystem changes and registry changes - this is the lowest level, generic way to do this, but may need you to set up filters as needed. I referenced this thread for this answer, and it might be useful for your own reference.