使用.NET或VB6在Windows中获取最后一个exe文件的执行日期(或时间)



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

我相信他们一定要把它放在某个地方。原因是,在控制面板(Win Vista)中,当你进入"程序和功能"时,你可以选择根据程序的使用频率(运行/执行频率)对程序进行排序,因为这不会基于上次访问的时间。然后,在他们的描述中,他们引用了诸如"很少"、"有时"、"经常"、"定期"等术语的使用频率

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

有什么想法吗?

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

更新2

这显然与MSI安装不同。

从这个线程获得的信息(上一篇文章):

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

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

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

这是由Windows安装程序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来获取此信息。

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

最新更新