From: "nobu (Nobuyoshi Nakada)" Date: 2013-03-18T16:15:40+09:00 Subject: [ruby-core:53495] [ruby-trunk - Bug #8109] FileUtils.mv fails across devices on Windows Issue #8109 has been updated by nobu (Nobuyoshi Nakada). Why Windows returns ERROR_ACCESS_DENIED on cross-device link for directory, while ERROR_NOT_SAME_DEVICE for file? ---------------------------------------- Bug #8109: FileUtils.mv fails across devices on Windows https://bugs.ruby-lang.org/issues/8109#change-37689 Author: mitchellh (Mitchell Hashimoto) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: 2.0.0-p0 Reproduction code: https://gist.github.com/luislavena/5179408 The issue is that Ruby is using MoveFile under the covers: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx Quote directly from the MoveFile docs: "The one caveat is that the MoveFile function will fail on directory moves when the destination is on a different volume." Instead, MoveFileEx should be used with the MOVEFILE_COPY_ALLOWED flag. This function has existed since XP, and since Ruby 1.9 is XP+, we can safely switch to this: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx The MoveFileEx call with the proper flag will just do the right thing. -- http://bugs.ruby-lang.org/