首页 > 解决方案 > Win32 CopyFile 无法复制到外部驱动器

问题描述

我正在创建一个 Windows 服务,它使用CopyFileW. 一切都按预期工作,但问题是 Windows 将文件复制到拇指驱动器,它显示为“文件”类型,既不能删除、复制、移动也不能重命名。 我试过了,没有错误,即返回。如果目标文件在驱动器上,它确实有效。这是负责复制文件的代码:'文件'
GetLastErrorCopyFiletrue
C

LPWSTR filename = PathFindFileNameW(file.first.c_str());
LPWSTR mediaFilePath = new WCHAR[1000];
wcscpy_s(mediaFilePath, 255, lpdbv->dbcc_name);
wcscat_s(mediaFilePath, 255, L"\\");
wcscat_s(mediaFilePath, 255, filename);

bool copied = CopyFileW(file.first.c_str(), mediaFilePath, false);
if (!copied) {
    logToFile(L"Couldn't copy file, error " + GetLastError());
}

标签: c++winapiwindows-servicesfile-copying

解决方案


由于“paddy”的注释,我终于找到了错误,这是目标文件名的问题,在转储它并以十六进制查看后,我发现它附加了 0x00 0x20 这是一个WCHAR空格。在最后删除那个额外的字符后,问题得到了解决。


推荐阅读