我正在创建Windows服务,该服务使用CopyFileW
将文件复制到外部拇指驱动器。一切都按预期工作,但问题是Windows将文件复制到拇指驱动器,并且显示为“文件”类型,不能删除,复制,移动或重命名。CopyFileW
我尝试了,没有错误,即GetLastError
返回了CopyFile
。如果目标文件位于true
驱动器上,它将起作用。这是负责复制文件的代码:
C
我终于找到了该错误,这要归功于“ paddy”的注释,这是目标文件名的问题,将其转储并以十六进制查看后,我发现它附加了0x00 0x20,它是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());
}
空间。最后删除该多余字符后,问题已解决。