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

时间:2009-09-21 03:22:43

标签: c# windows winapi

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

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

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

  1. 复制文件。
  2. 在调用GetFileAttributes后,使用SetFileAttributes从目标中删除ReadOnly标志。
  3. GetFileTime(原始)
  4. SetFileTime(目的地)(原始文件时间)
  5. 再次应用readonly标志。
  6. 这个问题是重新应用readonly标志后文件修改时间会更新。有没有办法坚持所有的元数据?

1 个答案:

答案 0 :(得分:5)

我会尝试打开不是GENERIC_WRITE的文件,而是FILE_WRITE_ATTRIBUTES来设置文件时间,并且即使文件设置了只读属性,也希望打开文件。< / p>