Windows defrag just seems to defragment all the files but without moving them.
I have a disk program (PerfectDisk) which has an option to move all the files to the start of the partition.
When you run it in Drive C it reports that it cannot move system files because they are in use. However, it then asks if you want to schedule a defrag on that disk next time it boots. Works fine and I am sure there are other defrag programs that have that option.