首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MoveFileEx APi在C盘中移动文件

如何使用MoveFileEx APi在C盘中移动文件
EN

Stack Overflow用户
提问于 2010-06-07 17:53:27
回答 2查看 2.2K关注 0票数 0

当我使用MoveFileEx移动C盘中的文件时,我得到了访问被拒绝的错误。任何解决方案

代码语言:javascript
复制
int i ;
DWORD dw ;
String^ Source = "C:\\Folder\\Program\\test.exe" ;
String^ Destination = "C:\\test.exe"; // move to program Files Folder

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

i = MoveFileEx( WSource, WDestination ,MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED ) ;
dw = GetLastError() ;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-07 17:59:42

您需要确保运行进程的用户帐户对要移动的文件具有读访问权限,并且对要写入的文件具有写访问权限。并且要移动的文件未被其他进程锁定,并且目标目录中没有被其他进程锁定的同名文件。

试着在Windows资源管理器中手动移动相同的文件,看看你得到了什么错误,当你可以这样做而没有问题时,你的应用程序可能也会工作(假设它们在同一个账户下运行)。

票数 0
EN

Stack Overflow用户

发布于 2010-06-07 19:39:21

你的问题中发布的代码是真正的二手代码吗?

如果是这样,那么您的文件名就有问题了。\是C和C++字符串中的转义字符,如果您希望在结果字符串中包含真正的\字符,则应该将其加倍。

所以你的路径应该是:

代码语言:javascript
复制
String source = "C:\\Folder\\Program\\test.exe";
String Destination = "C:\\test.exe";

此外,在C和C++中,^不是一个有效的字符,它只在PASCAL语言中定义指针时有效。我怀疑你的代码真的是用Pascal写的,但我不确定上面关于字符串中转义字符的注释在Pascal中是否有效……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2988492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档