背景
在Windows系统下没有提供可以对文件夹时间属性修改的方法或者API,在上一篇文章中我们提到了文件时间的函数,那么我们可以以打开文件的方式打开文件夹,然后通过修改文件时间的API函数对文件夹时间进行访问获取并进行修改。
解决方案
首先,我们介绍一个函数CreateFile:
HANDLE CreateFile(
LPCTSTR lpFileName, // 文件名指针
DWORD dwDesiredAccess, // 访问模式
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //安全属性
DWORD dwCreationDisposition, // 创建方式
DWORD dwFlagsAndAttributes, // 文件属性
HANDLE hTemplateFile // 指向待复制属性的文件指针
);
当要对文件夹进行操作时,将第一个参数IpFileName设置为文件夹的名称或者路径;将访问模式设置为GENERIC_READ,对于文件夹属性信息的写入需要GENERIC_WRITE的帮助;由于CreateFile函数在进行文件夹操作的时候,不能以创建的方式进行,所以创建方式只能打开已经存在的对象,因此将dwCreationDisposition设置为OPEN_EXITSING;dwFlagsAndAttributes参数的设置是比较重要的,正是通过将该参数设置为FILE_FLAG_BACKUP_SEMANTICS属性才使CreateFile()函数来进行打开文件夹的操作。
实践
我们运行程序,获取一个文件夹的时间属性并对其进行修改<