Есть метод, но только в виндовсе 2003 и Longhorn sever :
Код:
uint32 Defrag(
boolean Force,
object DefragAnalysis
);
Возможно апишки для дефраги и нет другой. Но можно юзать утилитку для дефрагентации, работающую в консольном режиме. И заделать так, чтобы пользователь и не догадался о запущенном консольном приложении.
Может знакомый компонент видел? А не апишку?
Я нашел еще DefragVolume и подобные ему, но для Windows CE