Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET或VB6在Windows中获取上次exe文件执行日期(或时间)_C#_Windows_Vb.net_File_Vb6 - Fatal编程技术网

C# 使用.NET或VB6在Windows中获取上次exe文件执行日期(或时间)

C# 使用.NET或VB6在Windows中获取上次exe文件执行日期(或时间),c#,windows,vb.net,file,vb6,C#,Windows,Vb.net,File,Vb6,基本上,我在任何地方都找不到这个。我真正需要的是上次执行的日期,甚至是上次关机的日期(即exe结束执行)。我甚至不需要所有运行/停机的目录,只需要最后一个 我肯定他们必须把它放在某个地方。原因是,在控制面板(Win Vista)中,当您转到“程序和功能”时,您可以选择按使用频率(运行/执行)对程序进行排序,因为这不会基于上次访问的时间。然后,在他们的描述中,他们用“很少”、“有时”、“经常”、“定期”等术语引用使用频率 现在在Win7中,如果右键单击列并从installed programs l

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

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

现在在Win7中,如果右键单击列并从installed programs listing控件中选择“more…”,您将看到一个“Last Used on”选项!这意味着最后使用的日期至少保存在Win7中的某个位置

有什么想法吗


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

更新2

这显然与MSI安装不同

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

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

HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\\Usage

这是由Windows Installer API维护的

MSUseFeature()递增使用计数器() MsiGetFeatureUsage()获取上次使用的日期和使用计数

当通过播发的快捷方式启动应用程序或使用MSIFREF*()函数之一时,使用计数器也会增加

更新

查看本文:

这些值似乎没有存储在任何地方,但更像是一种假设。因此,您也可以使用
文件.GetLastAccessTime
来获取此信息


您还可以使用
文件系统监视程序
进程
。然后在
FileSystemWatcher
看到更改并启动exe时设置一个标志。

查看我的更新。另外,您认为LastAccess DateTime的可靠性如何?它多久会被访问它的windows进程污染一次?嗯,我使用的是Win7,但我需要我的解决方案在WinXP及以上或至少WinVista及以上(或尽可能多的操作系统)上工作。通过访问,我不确定我是否完全知道它的定义。右键单击并检查其属性是否被视为访问权限?此外,我阅读了msdn博客文章,这真是太神奇了-它让我大吃一惊,哇!他们所要做的就是在操作系统第一个测试版发布日期后弹出一条安装应用程序的消息,以确保插入所有字段,并且您可以看到所有开发人员修改代码,以摆脱在安装过程中要求更多详细信息的msgbox。不,右键单击和检查不是更改访问时间的一部分。在我看来,最好、最准确的方法是让FileSystemWatcher检查访问,如果进程正在运行,则标记它并保存日期时间,然后在进程不再运行时取消标记。这些安装程序注册表项与您想象的不一样。请参见Windows Vista及以上版本,上次访问时间默认为关闭且不更新,仅在创建时更改,因此Windows不应更改想法日期,除非手动打开。资源管理器跟踪某些可执行文件的快捷方式的使用时间(以保留频繁访问的程序列表)可通过
IShellLink
接口公开。如果不是,我想这不是公开的。