Actually the defrag in Vista is quite a decent one. Vista defrag DOES have an "advanced mode" if you want to call it that. You'll need to run it in the command prompt though. Start command prompt and type
defrag ? to see what options it provides(btw the
-b switch isn't listed there but trust me it works). By default it doesn't attempt to move files larger than 64 MB but you can get around this by entering the
-w switch(eg. defrag -w). If you want it to do the best job possible then boot into safe mode start command prompt and type
defrag -w -f c:(can take a long time to complete) and afterwards
defrag -b c: (this will defrag the boot files of your system according to the
layout.ini file which will speed up the start up of your system). BTW i am assuming c: is your windows partition ...
The biggest problem with almost all freeware defrag programs is that they don't take the layout.ini file into account which means they move those boot files to a different location and that means that your system startup is actually slower after you've run one of those programs. The most powerful freeware defrag i know of is called
JkDefrag but that one also doesn't take the layout.ini file into account so it's a good idea to run defrag -b after you've run JkDefrag.
Here is a good comparison of Defrag programs if nothing else at least you will get a few good links from here.
http://donnedwards.openaccess.co.za/2007/06/great-defrag-shootout-all.html