MoveFileEx问题

时间:2010-06-07 07:16:06

标签: c++-cli

int i ;
DWORD dw ;
String^ Source = "c:\\Program\\test.exe" ;
String^ Destination = "c:\\Program Files" ; // move to program Files Folder

//pin_ptr<const wchar_t> WSource = PtrToStringChars(Source);
// pin_ptr<const wchar_t> WDestination = PtrToStringChars(Destination);

i = MoveFileEx(L"c:\\Program Files\\Program\\Test.exe",L"c:\\Program Files",MOVEFILE_REPLACE_EXISTING) ;
dw = GetLastError() ;

return 0; 

当我运行程序时,状态dw的值为5。

错误是什么

3 个答案:

答案 0 :(得分:3)

错误代码5是拒绝访问。请检查您是否有足够的目标目录权限。

BOOL WINAPI MoveFileEx(
  __in      LPCTSTR lpExistingFileName,
  __in_opt  LPCTSTR lpNewFileName,
  __in      DWORD dwFlags
);

MOVEFILE_REPLACE_EXISTING - 如果lpNewFileName或lpExistingFileName命名目录,则不能使用此值。

在您的情况下,目标是“C:\ Program files”目录。所以它失败了。

答案 1 :(得分:2)

输入命令提示符 net helpmsg 5 。这将显示错误的含义。 在我的系统中它是:“访问被拒绝。”

只是一个提示:为什么第二个参数不是文件路径?

答案 2 :(得分:0)

错误5是拒绝访问。如果

,可能会发生此错误
  • 您无权在目标目录中书写
  • 您无权覆盖目标目录中具有相同名称的现有文件。

我认为你是第二种情况:要覆盖的文件被锁定。这是一个可执行文件,它可能正在运行。