Use the one provided with Windows.
I tried Diskeeper, and for sure it has finished sooner, but its result is bad - just as nearly all third-party defrags.
To understand it, you must know that putting file fragments together, as third-party softwares do, isn't enough. Windows' Defrag also puts together (since W98) the files that belong to a single application. Compare both with a watch and by listening to the hard drive's arm: Windows' Defrag is better.
About the register: Windows reads it fully to the Ram at bootup, so fragmentation is irrelevant, and writes immediately a full copy of it that will be the new register file.
About the paging file: it is anyway good practice to freeze its size to avoid fragmentation. Reduce it to zero, defragment, and create a fixed-size paging file - it won't move any more.
Windows' Defrag does defragment files currently in use.
More than choosing your defrag software, you can improve things by a sound partition of your hard drive. Put Windows on a (not too) small volume, application on another, and your documents on a third one. Only the Windows volume gets fragmented but doesn't mess up the applications volume, and the Windows volume is quickly defragmented. This small volume, at the beginning of the disk (fastest place) also keeps all pieces of Win close to another, thus reducing arm movements. Next advantage: if formatting the Windows volume, you keep your documents, and some programs stay ready to run.
Use Ntfs - for this reason as well - because Windows' Defrag is much faster on it.
Consolidating free space: Not very important with Ntfs, as it doesn't fragment a file just to use the first available free space. So letting some free space fragmented is a sound time saving.
I defrag about twice a month, it takes me 3 min in such a configuration.