![当用户更改日期/时间时,操作系统会发生什么?](https://linux22.com/image/1429775/%E5%BD%93%E7%94%A8%E6%88%B7%E6%9B%B4%E6%94%B9%E6%97%A5%E6%9C%9F%2F%E6%97%B6%E9%97%B4%E6%97%B6%EF%BC%8C%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我只是对一个问题感到好奇:假设我们有一个文件夹,里面有一些非常重要的文件(可能是 System32 目录)。我们知道文件系统存储了一些有关这些文件的创建和修改日期的信息。假设这些文件是在 2014 年 1 月 1 日创建的。
当用户将系统日期更改为例如一年前的 1 月 1 日时,这些文件会发生什么情况,但总体而言,文件系统的全局状态会发生什么情况?2013?
这种变化会以某种方式影响这些文件吗?当操作系统访问包含“奇怪”数据信息的文件时,操作系统会如何反应,例如:
- 创建日期:2014 年 1 月 1 日
- 最后修改日期:2013 年 1 月 1 日
再说一遍,如果用户将系统日期改为一年,会怎么样向前?
答案1
具体细节取决于您的操作系统(您没有说明,但我认为您指的是某个版本的 Windows,因为您提到了 system32),但一般来说,时间戳保存为自“纪元”以来的秒数(对于符合 POSIX 标准的系统,纪元为 1970 年 1 月 1 日午夜 UTC,对于某些版本的 Windows,纪元为 1601 年 1 月 1 日)。当系统从文件读取时间戳时,它会将此秒数转换为当前本地时间以供显示。
当您更改计算机上的时钟时,它不会改变这些时间戳数字,而只是改变它们转换为人类可读的时间和日期的方式。
大多数系统并不关心文件的时间戳是否在未来,因此将时钟调回一年或两年通常不会有任何影响。这有时是必要的,因为如果计算机内部时钟的电池备用电量耗尽,并且没有互联网连接,那么计算机将不知道实际时间是多少,并且操作系统必须设计为在这种情况下成功启动。
有一些值得注意的例外:防病毒工具可以将此检测为病毒感染的症状。软件反盗版工具也可以将此检测为延长免费试用期的尝试。软件开发中使用的“make”程序依靠时间戳来确定要构建的内容。等等。
答案2
有关机器日期和时间的详细信息将保存在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient”中。因此,通过“运行”命令打开注册表并键入“regedit.exe”。文件分配表将出现在注册表中,它将保存所有详细信息和所做的更改详细信息。这将向 C 库中的 GLU(图形语言实用程序)提供信息,并将其转换为机器可读语言。通过这种方式,机器接受更改并开始处理。