CCleaner is the best I have used. It used to be called "Crap Cleaner", but they re-branded themselves to have a more acceptable name. It will clean up history for many, many applications, and temporary files older then a specified threshold. It also seems to do a good job cleaning the registry (although I have heard that this is a fruitless effort). I've never had it cause any troubles for me though, and I use it regularly on more then one machine (I rarely use the Registry Cleaner feature, but I regularly use the System Cleaner feature, even on Windows 8)
It is 100% free and regularly updated.
Warning about usage: CCleaner cleans settings for a lot of programs and by default cleans up settings. So if you install a new program, or update to a new version of CCleaner then it may by default start cleaning the settings for a program you don't realize. So always check the applications tab before running, especially if you find yourself loosing history or settings on a specific program.