如何复制具有深层路径的只读文件并保留文件时间元数据?

lla*_*oo7 2 c# windows winapi

我正在尝试处理的任务是在WINAPI周围创建一组包装器,以处理Windows中具有深层路径的文件的各种文件修改.

目前,我使用WINAPI调用复制文件,前缀为"\\?\",如此处所示.复制文件后,我正在使用原始文件中的文件时间元数据(创建,访问,修改)并在目标文件上设置时间.当我尝试将此逻辑应用于只读文件时,我遇到了问题.

这是我到目前为止所尝试的:

  1. 复制文件.
  2. 在调用GetFileAttributes后,使用SetFileAttributes从目标中删除ReadOnly标志.
  3. GetFileTime(原创)
  4. SetFileTime(目的地)(原始文件时间)
  5. 再次应用readonly标志.

这样做的问题是重新应用readonly标志后文件修改时间会更新.有没有办法坚持所有的元数据?

Mar*_*wis 5

我会尝试打开该文件GENERIC_WRITE,但不是为了FILE_WRITE_ATTRIBUTES设置文件时间,并且即使文件具有只读属性集,也希望打开该文件.