I believe that for safety defraggers use published API's to move stuff around,
and the difference between one defragger and another is the defragger developer's code that chooses what to do and in what sequence.
A few decades ago Application developers were unhappy that Microsoft used uncompetitive practices when entering the markets the developers created.
Microsoft were developing and using "secret" mechanisms in the operating system so their own applications had a far more effective O.S.
The European Union decided to take action and break up Microsoft.
I forget all the details and the consequences, but I believe Microsoft would fear the consequences if they used unpublished API's in the Windows Defragger.
I also believe that Microsoft would not publish an API that enabled a third party to develop a better product than Microsoft.
Were a third party to use "insider knowledge" to create a "super API" the chances are that it could get broken by the next security patch ! !
I am not expecting any defrag operation under Windows to touch "unmoveable" files.
I am expecting to move such files when NOT under Windows, i.e. during BOOT before Windows.
My experience with previous defraggers was that a BOOT DEFRAG focussed upon the unmoveable,
and "left undone those things that ought to be done" with the expectation they would be done under Windows.
I think it "appeared" better to defrag under Windows before the BOOT defrag to reduce the duration of the flurry of unfriendly cryptic messages,
and then after the Boot defrag perform a further defrag under Windows.
How should I use Defraggler ?
Under Windows then under BOOT then under Windows again,
or some other way ?