积极答复者
MoveFileEx 移动文件夹 返回错误码:5,拒绝访问

问题
-
答案
-
你好,
这是我的代码:
#include <windows.h> #include <tchar.h> #include <stdio.h> bool blRet = MoveFileEx("D:\\test2", "D:\\10", MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH) ; int main() { if (!blRet) { printf("err is : %d ", GetLastError() ); return (0); } else printf(TEXT("MoveFileEx succeed")); return (0); }
运行结果如图所示:
其中文件夹test2的属性如图所示:
Best Regards,
Jeanine Zhang
- 已标记为答案 Neko_NoW 2019年8月1日 6:05
全部回复
-
你好,
感谢您在MSDN论坛发帖提问。
>>MoveFileEx 移动文件夹 返回错误码:5,拒绝访问
错误5是拒绝访问。在以下情况可能会发生此错误
1,您无权在目标目录中写入
2,您无权覆盖目标目录中具有相同名称的现有文件。我认为你的问题更偏向于第二个:要覆盖的文件被锁定。我建议你可以尝试验证任何应用程序都没有使用C:\\1,并且它没有运行(通过任务管理器)。然后尝试在资源管理器中手动移动该文件(这将验证当前登录的用户是否有权移动文件)。
Best Regards,
Jeanine Zhang
您好,感激你的答复!
C:\\1,首先这个文件夹是没有任何程序占用的,只是里面存储的文件比较多,而且是可以移动的,这个可以肯定的
1.C:\\1,文件夹占用2G大小调用MoveFileEx 是可以调用成功的
2.C:\\1,文件夹占用7G大小调用MoveFileEx 是可以调用失败,返回0x5
-
你好,
根据你的要求,将测试文件夹中的单个文件保持在2M左右,文件夹大小满足9G以上的容量。然后调用MoveFileEx函数,依然成功。
出现错误5是拒绝访问,在以下情况可能会发生:
1,您无权在目标目录中写入
2,您无权覆盖目标目录中具有相同名称的现有文件。我认为使用MoveFileEx移动文件夹,对文件夹的大小,文件夹中储存文件数量没有限制。
Best Regards,
Jeanine Zhang
谢谢,我的代码是这样的,但是的确出现了返回值为5的情况,而且是很多用户都出现了,
wstring szPath(L"D:\\1"), szOut(L"D:\\2");
bool blRet = MoveFileEx(
szPath.c_str(),
szOut.c_str(),
MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH) ? true : false;
if (false == blRet)
{
DWORD nErr = ::GetLastError();
}请问你的代码是如何调用呢?
-
你好,
这是我的代码:
#include <windows.h> #include <tchar.h> #include <stdio.h> bool blRet = MoveFileEx("D:\\test2", "D:\\10", MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH) ; int main() { if (!blRet) { printf("err is : %d ", GetLastError() ); return (0); } else printf(TEXT("MoveFileEx succeed")); return (0); }
运行结果如图所示:
其中文件夹test2的属性如图所示:
Best Regards,
Jeanine Zhang
- 已标记为答案 Neko_NoW 2019年8月1日 6:05