c++ - Win32 CopyFile 无法复制到外部驱动器
问题描述
我正在创建一个 Windows 服务,它使用CopyFileW
. 一切都按预期工作,但问题是 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());
}
解决方案
由于“paddy”的注释,我终于找到了错误,这是目标文件名的问题,在转储它并以十六进制查看后,我发现它附加了 0x00 0x20 这是一个WCHAR
空格。在最后删除那个额外的字符后,问题得到了解决。
推荐阅读
- python-3.x - dict中的字符串转换问题然后添加到列表
- dependencies - 使用 useEffect 和 useState 避免 ESLint 'react-hooks/exhaustive-deps' 警告
- c++ - C++ - 如何限制对全局变量的访问,同时允许从中断服务例程和模板类专业化中访问
- apache-flink - 这意味着“类型序列化程序工厂无法从配置中加载其参数”?
- javascript - 切换到新音频源时音频上下文中断
- r - 当使用两列,这列或那列时,我无法想出在 R 中执行 grep 的方法
- regex - Nginx 重写规则路径到查询字符串
- javascript - Vue“计算”值:常规函数有效,刺箭头失败
- three.js - ThreeJS 调整相机旋转
- python - 如何检测多个python源文件之间的代码重复?