我们有一个客户,确定驱动器初始化或 NTFS 分区创建的时间非常有用。某个地方是否有时间戳值?如果有人可以提供任何建议,我们将不胜感激。
谢谢!
-斜杠
答案1
是的。您甚至可以通过 LAN 进行操作。
CIFS 事务为TRANS2_QFSINFO
,信息级别为SMB_QUERY_FS_VOLUME_INFO
查询卷创建时间的本地 Windows NT API 函数是ZwQueryVolumeInformationFile()
,得到一个FILE_FS_VOLUME_INFORMATION
当被要求提供信息类别时,数据结构(注意,与 CIFS 数据结构几乎相同)会返回FileFsVolumeInformation
。测试此查询是否有效是 Microsoft 向驱动程序开发人员提供的 IFS 测试程序的一部分。
有趣的是,似乎没有人编写过一个方便的实用程序,它只查询卷并以人类可读的形式打印其创建时间戳。1据 我所知,您最接近的方法就是启动 SysInternals 的procmon
工具并查找流经的卷信息查询。也许阅读本文的人会受到启发,创建一个增强的vol
命令。
是的,卷创建时间戳是正确初始化,而不是设置为零或其他常量。我没有检查,但我对此信息的存储位置的合理猜测是MFT 条目$STANDARD_INFORMATION
的属性$Volume
。我可以想到其他三个可能的位置,但这是最合乎逻辑的。
1grawity
的实用程序只需要再稍微完善一下,包括FileTimeToSystemTime()
和的简单使用GetTimeFormat()
,就可以让无法在头脑中解码 Win32 时间戳的最终用户使用。☺
答案2
据我所知,NTFS 没有内置“卷创建日期”。但是,通过查看System Volume Information
卷根目录中的目录的创建日期,您应该能够相当接近地估算出创建日期。
答案3
这在某个地方是暴露的。如果你启动 Windows XP CD 并访问恢复控制台,那里的 chkdsk 版本将在运行完成后打印出卷创建日期。