Boot into Safe Mode (F8 or Ctrl just as Windows starts) THEN run Defrag (or Maintenance Wizard).
Much faster since in Safe Mode Windows isn't doing much and has a minimal set of drivers.. .Byebye eternal 4%..... .Note that it is "normal" for Defrag to appear to be doing nothing for quite long periods - best schedule it to run when you are asleep or out (Task Scheduler). Most defraggers are a compromise between reasonable speed and throughness though I suspect that M$ Defrag is another typical example of Micro$oft code bloat.
Better still, use Partition Magic to divide up your 40Gig monster into more manageable logical partitions. You can then use Funduc Software's "Application Mover" <a href="http://www.funduc.com/" target="_blank">http://www.funduc.com/</a> to migrate installed apps.
Note that some DOS apps and a surprising number of Windows apps are really only happy in the default folder that the installer presents, even though they seem to indicate that you can choose. Presumably the default location is still hard coded into some of the modules (sloppy coding).
If you have zillions of files in My Documents you can move all these to a MyDocs folder on a new logical drive and gain a lot of speed generally. Leave the My Documents folder on the C

drive (Windows gets upset if you delete it completely) but tell Windows to look elsewhere for your documents [Desktop/My Documents/Properties/Target Folder location]. This makes a huge difference to access speed and defrag speed.
You can also relocate your Temporary Internet files to another logical volume and do the same with your Windows swapfile. Don't try this unless you know what you are doing (in which case you will probably already have done it).
Cheers from MTK