首页 > 解决方案 > 使用 Windows API 覆盖系统/隐藏文件的正确方法是什么?

问题描述

当您使用CopyFileExA函数(请参阅Windows API 参考:winbase.h)复制文件时,如果目标文件已经存在,它可以使用(或清除)标志 COPY_FILE_FAIL_IF_EXISTS 来“失败”或不“失败”。但是,我找不到用只读、隐藏或系统属性覆盖文件的方法。

我正在开发一个具有特定要求的备份程序,这是我在其他任何地方都找不到的。

我在想,在复制具有一个或多个这些属性集的文件之前,也许我可以清除现有文件上的这些属性,然后继续复制文件,因为我知道我的程序将用明确的属性覆盖现有文件。

这是最好的方法吗?

另一种选择是在复制新文件之前删除旧文件。但我担心如果我删除旧的(备份)文件,然后才会尝试复制新的文件,如果由于某种原因复制失败,那么我最终会没有备份文件。

或者也许有一种我不知道的覆盖系统/隐藏文件的方法。

完成此任务的最佳方法是什么 - 复制和覆盖设置了 System/Hidden/ReadOnly 属性的文件?

标签: winapifile-copying

解决方案


推荐阅读