Win32 CopyFile无法复制到外部驱动器

问题描述 投票:-1回答:1

我正在创建Windows服务,该服务使用CopyFileW将文件复制到外部拇指驱动器。一切都按预期工作,但问题是Windows将文件复制到拇指驱动器,并且显示为“文件”类型,不能删除,复制,移动或重命名。CopyFileW我尝试了'File',没有错误,即GetLastError返回了CopyFile。如果目标文件位于true驱动器上,它将起作用。这是负责复制文件的代码:

C
c++ winapi windows-services file-copying
1个回答
1
投票

我终于找到了该错误,这要归功于“ 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()); } 空间。最后删除该多余字符后,问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.