1

基本上,我在任何地方都找不到这个。我真正需要的只是上次执行的日期,甚至是上次关机的日期(即 exe 结束执行)。我什至不需要所有运行/关闭的目录,只需要最后一个。

我确信他们必须把它保存在某个地方。原因是,在控制面板(Win Vista)中,当您转到“程序和功能”时,您可以选择按程序的使用频率(运行/执行)对程序进行排序,因为这不会基于上次访问时间. 然后,在他们的描述中,他们用“很少”、“有时”、“经常”、“经常”等术语来引用使用频率……

现在在 Win7 中,如果您右键单击列并从已安装程序列表控件中选择“更多...”,您将看到“上次使用时间”选项!这意味着上次使用的日期至少保存在 Win7 中的某个位置。

有什么想法吗?

更新:关于 LastAccess 日期时间: LastAccess 似乎太不可靠了(如果我错了,请纠正我)只要有东西(例如 Windows)访问它,它就会不断变化。也许我应该问,Windows 是否会通过访问文件以从中读取信息(例如文件大小/日期等)来弄乱这个字段,尤其是在浏览文件夹时,或者 Windows 是否秘密访问文件以防止污染上次访问日期?

4

1 回答 1

0

更新 2

对于 MSI 安装,这显然是不同的。

从这个线程得到的信息(最后一个帖子):

http://www.tomshardware.co.uk/forum/55552-45-remove-program-date

对于 MSI 安装,Windows 安装程序在其自己的注册表中维护使用计数 > > 基于产品和功能,例如可以在下面找到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\\Usage

这是由 Windows Installer API 维护的。

MsiUseFeature() 增加使用计数器 ( http://msdn.microsoft.com/en-us/library/aa370502(VS.85).aspx ) MsiGetFeatureUsage() 获取上次使用日期和使用计数

通过广告快捷方式启动应用程序或使用 MsiProvide*() 函数之一时,使用计数器也会增加。

更新

查看这篇文章:http: //blogs.msdn.com/b/oldnewthing/archive/2004/07/09/178342.aspx

这些值似乎没有存储在任何地方,而更像是一个假设。所以你也可以使用File.GetLastAccessTime来得到这个。

您也可以使用FileSystemWatcherProcessFileSystemWatcher然后在看到更改并启动 exe时设置一个标志。

于 2013-07-21T06:23:15.297 回答