For system files there's PageDefrag:
http://technet.microsoft.com/en-us/s.../bb897426.aspx
It's supposed to take care of some files that are open for exclusive access during Windows operation and so can't supposedly be defragmented. When started it tells you how many fragments these are broken into. If you then choose to defrag them it will do so at the following computer start when Windows hasn't opened them yet.
However JkDefrag for one does defragment all those files all right during normal Windows operation, so I've never used PageDefrag to defragment, just to check that these files aren't fragmented. I don't think JkDefrag is the only that can do this since it's based on Microsoft's APIs--I wouldn't use it if it wasn't--, but at least you can run PageDefrag to check these system files. Should they get fragmented, performance would go down the drain.
By the way to discriminate which files to defrag instead of the whole disc, I use Contig:
http://technet.microsoft.com/en-us/s.../bb897428.aspx