I deleted the previous clone.vdi before I ran the code, and the file doesnt get created until the CloneTo() method runs - so no idea why it thinks the file already exists.FWIW the original file is a ~256mb linux VDI, but the clone.vdi that is created is only ~45k.

This matches the known behaviour of VirtualBox, which is that the VBoxSVC background process retains a memory of media even after it is deleted, and will refuse to allow "conflicting" registrations during that time. VBoxSVC must be shut down and restarted to get around this.