Попробуйте использовать это:
public static void RobustMove(string sourceDirectory, string destDirectory)
{
//move if directories are on the same volume
if (Path.GetPathRoot(source) == Path.GetPathRoot(destination))
{
Directory.Move(source, destination);
}
else
{
CopyDirectoryRecursive(source, destination);
Directory.Delete(source, true);
}
}
Вы найдете функцию CopyDirectoryRecursive здесь :
Это должно работать, пока вы не используете составной том или символьные ссылки на другой физический диск.
Чтобы быть еще более надежным, вы можете улучшить эту функцию, используя Move до тех пор, пока не сработает System.IO .Exception, а затем переключиться на копирование и удаление.