是否可以确定何时创建NTFS分区?


16

我们有一个客户端,用于确定何时初始化驱动器或创建NTFS分区是非常有用的。某个地方有时间戳记值吗?如果有人可以提出任何建议,将不胜感激。

谢谢!

-slashp


只是一个主意,但是您可以反转卷UUID计算以获得日期/时间吗?(我不知道UUID是如何生成的,因此需要进行一些研究才能发现,而且根本不可能。)
克里斯·纳瓦

1
@ChrisNava:NTFS中使用的唯一ID不是128位UUID,而是一个随机的64位数字。(此外,现代系统也不会生成基于类型1的基于时间的UUID;出于隐私考虑,首选基于类型4的基于随机的UUID。但是如果它类型1的UUID,则将没有任何可逆的计算;时间戳是存储在清晰可见的位置。)
user1686'1

Answers:


17

是。您甚至可以通过LAN进行操作。

CIFS事务为TRANS2_QFSINFO,信息级别为SMB_QUERY_FS_VOLUME_INFO。用于查询卷的创建时间的本机Windows NT API函数是ZwQueryVolumeInformationFile()FILE_FS_VOLUME_INFORMATION当询问FileFsVolumeInformation信息类别时,它会产生一个数据结构(几乎与CIFS相同,请注意)。测试该查询是否有效是Microsoft提供给驱动程序开发人员的IFS测试仪的一部分。

有趣的是,似乎没有人编写过这样一种方便的实用程序,该实用程序仅查询卷并以人类可读的形式打印其创建时间戳。1 据我所知,最接近的是启动SysInternals procmon工具并查找流式传输的卷信息。也许有人读这篇文章会激发创建增强vol命令的灵感。

是的,卷创建时间戳正确初始化,而不仅仅是设置为零或其他常量。我没有检查,但是我对这些信息的存储位置的有根据的猜测是MFT条目的$STANDARD_INFORMATION属性$Volume。我可以想到另外三个可能的地方,但这是最合逻辑的地方。


1grawity的效用只是需要多一点打磨,包括简单的使用FileTimeToSystemTime()GetTimeFormat(),使其可用为不能解码的Win32时间戳在他们的头脑最终用户。☺


哇,我给您+1的答案,因为这正是我想要的。不幸的是,我不是具有系统内部知识的Win32 API程序员,而是在寻找快速解决方案。与布道者好主意。不过谢谢!
slashp 2012年

7
这样吗?(丑陋的代码警告)
user1686

8

我不知道NTFS内置的“卷创建日期”。但是,通过查看System Volume Information卷根目录中目录的创建日期,您应该能够非常接近地估计创建日期。


2
这给了我很好的近似。感谢你的快速回复!现在,我知道应该归咎于未将备份驱动器包括在内的驱动器是:)。
slashp 2012年

0

这暴露在某处。如果启动Windows XP CD并访问故障恢复控制台,则在完成运行后,那里的chkdsk版本将打印出卷创建日期。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.