Index: src/libchcore/TSubTaskCopyMove.cpp
===================================================================
diff -u -rdb818324a61602e118506ca8b3973e44d997c8de -r3be63f912be8157e7f1dc2dad443237dce1efa7c
--- src/libchcore/TSubTaskCopyMove.cpp	(.../TSubTaskCopyMove.cpp)	(revision db818324a61602e118506ca8b3973e44d997c8de)
+++ src/libchcore/TSubTaskCopyMove.cpp	(.../TSubTaskCopyMove.cpp)	(revision 3be63f912be8157e7f1dc2dad443237dce1efa7c)
@@ -194,8 +194,9 @@
 				// if moving - delete file (only if config flag is set)
 				if(bMove && spFileInfo->IsProcessed() && !GetTaskPropValue<eTO_DeleteInSeparateSubTask>(rConfig))
 				{
-					if(!GetTaskPropValue<eTO_ProtectReadOnlyFiles>(rConfig))
+					if(spFileInfo->IsReadOnly() && !GetTaskPropValue<eTO_ProtectReadOnlyFiles>(rConfig))
 						spFilesystem->SetAttributes(spFileInfo->GetFullFilePath(), FILE_ATTRIBUTE_NORMAL);
+
 					spFilesystem->DeleteFile(spFileInfo->GetFullFilePath());	// there will be another try later, so we don't check
 					// if succeeded
 				}
@@ -575,7 +576,7 @@
 		// NOTE: probably should be removed from here and report problems with read-only files
 		//       directly to the user (as feedback request)
 		if(!GetTaskPropValue<eTO_ProtectReadOnlyFiles>(rConfig))
-			SetFileAttributes(pData->pathDstFile.ToString(), FILE_ATTRIBUTE_NORMAL);
+			spFilesystem->SetAttributes(pData->pathDstFile, FILE_ATTRIBUTE_NORMAL);
 
 		// open destination file, handle the failures and possibly existence of the destination file
 		unsigned long long ullSeekTo = ullProcessedSize;