【发布时间】:2020-02-13 00:42:41
【问题描述】:
我正在创建一个使用CopyFileW 将文件复制到外部拇指驱动器的Windows 服务。
一切都按预期工作,但问题是 Windows 将文件复制到拇指驱动器并显示为“文件”类型,既不能删除、复制、移动也不能重命名。
我试过GetLastError 并且没有错误,即CopyFile 返回true。
如果目标文件在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());
}
【问题讨论】:
-
我正在使用
std::wstring c_str()函数,它返回char*而不是wchar_t*和CopyFileW需要LPCWSTR -
@VTT 哦,确实如此,我删除了,问题仍然存在
-
如果目标文件位于 C 盘而不是 U 盘上,它是否有效?如果您使用
CreatFile、ReadFile、WriteFile等自行复制文件,是否有效? -
@Jabberwocky 我忘了说,我试过了,它确实有效
-
@MekacherAnis 我的评论已被编辑,请按 F5。你应该edit你的问题并提及。
标签: c++ winapi windows-services file-copying