[英]Win32 CopyFile can't copy to external drive
我正在創建一個 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
空間。 在最后刪除那個額外的字符后,問題得到了解決。 我不知道PathFindFileNameW
是否附加了它或者它是另一個原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.