当我使用MoveFileEx移动C盘中的文件时,我得到了访问被拒绝的错误。任何解决方案
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() ;发布于 2010-06-07 17:59:42
您需要确保运行进程的用户帐户对要移动的文件具有读访问权限,并且对要写入的文件具有写访问权限。并且要移动的文件未被其他进程锁定,并且目标目录中没有被其他进程锁定的同名文件。
试着在Windows资源管理器中手动移动相同的文件,看看你得到了什么错误,当你可以这样做而没有问题时,你的应用程序可能也会工作(假设它们在同一个账户下运行)。
发布于 2010-06-07 19:39:21
你的问题中发布的代码是真正的二手代码吗?
如果是这样,那么您的文件名就有问题了。\是C和C++字符串中的转义字符,如果您希望在结果字符串中包含真正的\字符,则应该将其加倍。
所以你的路径应该是:
String source = "C:\\Folder\\Program\\test.exe";
String Destination = "C:\\test.exe";此外,在C和C++中,^不是一个有效的字符,它只在PASCAL语言中定义指针时有效。我怀疑你的代码真的是用Pascal写的,但我不确定上面关于字符串中转义字符的注释在Pascal中是否有效……
https://stackoverflow.com/questions/2988492
复制相似问题