Задача, которую я пытаюсь решить, - создать набор оболочек для WINAPI, чтобы обрабатывать различные модификации файлов для файлов с глубокими путями в Windows.
В настоящее время я копирую файлы, используя вызов WINAPI с префиксом "\\? \", Как предложено здесь . После копирования файла я использую метаданные времени файла (созданные, доступные, измененные) из исходного файла и задаю время в целевом файле. У меня проблема при попытке применить эту логику к файлу только для чтения.
Это то, что я пытался сделать до сих пор:
- Скопируйте файл.
- Удалите флаг ReadOnly из пункта назначения с помощью SetFileAttributes после вызова GetFileAttributes.
- GetFileTime (оригинал)
- SetFileTime (назначение) (с исходным временем файла)
- Снова установите флаг readonly.
Проблема в том, что время изменения файла обновляется после повторного применения флага только для чтения. Есть ли способ сделать это, сохраняя все метаданные?