【问题标题】:Change "last opened" date更改“最后打开”日期
【发布时间】:2013-03-27 07:51:40
【问题描述】:

有没有办法更改 OS X 上文件的“上次打开”日期(我认为是kMDItemLastUsedDate)?理想情况下,这将使用 C API 调用,但 Objective-C 很好。当我查找有关如何设置元数据属性的文档时,我得到了有关创建 Spotlight Importers 的信息,这似乎不太正确。

这是一个备份程序——从备份恢复后,“最后打开”的日期应该和原来的一样。

澄清一下,我确实想要来自stat()atime。那是不同的价值。如果您不相信,您可以自己使用touchmdls 进行实验。

【问题讨论】:

  • 我认为这将与 stat(2) 手册页中提到的 _DARWIN_FEATURE_64_BIT_INODE 相关,但这似乎不起作用。有趣的问题。
  • 它看起来好像是只读的,并且由 fs 设置。 mdls(1) 可让您查看它们,但我认为元数据在设计上是只读的。
  • @RandyHoward:它不能是只读的,因为它在您打开文件时被修改。我想知道 Launch Services 是否负责更新它。
  • 我不清楚。只读,我的意思是在应用程序级别。显然,fs 代码中或与之相关的某些东西正在处理它,但它可能不会暴露给应用程序。您可能必须走 kext 路线才能做到这一点?无论哪种方式,抱歉我无法回答,但我很想看看它是如何解决的。
  • @RandyHoward:我不相信数据甚至是由内核管理的。我可能会在您打开文件时尝试点击系统调用,但我怀疑我会整理大量的噪音。

标签: macos


【解决方案1】:

使用标准的 Unix utimes()futimes() 函数。从手册页:

描述

 The access and modification times of the file named by path or referenced
 by fildes are changed as specified by the argument times.

【讨论】:

  • 错了。我想要“最后打开”时间,这与 atime 不同。
猜你喜欢
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多