我在VbaProject.OTM中有一些宏。偶尔,我更新代码,但时间戳不会改变。 我没有检查文件大小是否发生变化。
预计会出现这种情况吗?
如果没有,问题是什么问题?
The first link above显示了一些解决方法,但我想了解原因,并找到解决方案以恢复此行为(如果可能),而不是解决方法
答案 0 :(得分:2)
变得更好。当文件发生变化时,没有人告诉我" Windows中的功能,即FindFirstChangeNotification()
和ReadDirectoryChangesW()
将报告保存文件的时间,除非大小发生变化,除非代码的批次,否则不会发生这种情况。添加。我不得不放弃64 K的评论来改变它。
procmon显示写操作,但没有更改时间戳的操作。当每次写入文件时默认行为是更新文件时,我都不能完全了解文件时间是否相同。
当你想通过分发文件来分发宏时,这不仅仅是一个问题(你真的不应该这样,微软在那里是正确的;文件的内部结构可能随着Outlook版本甚至个别更新而改变) 。当您重新安装或移动计算机并且发现漫游用户配置文件中的副本很古老时,它也可以保证悲伤......
我的个人解决方法是在Startup中触摸文件。这样,它总是被复制。
原因,顺便说一句,是http://blogs.msdn.com/b/oldnewthing/archive/2011/08/12/10195186.aspx中提到的两个原因之一。 Outlook正在使用内存映射IO,它也可以执行SetFileTime()
事情;我不确定procmon是否会看到这一点。
答案 1 :(得分:0)
您链接到的This包含两种解决此问题的方法:
这些都不起作用吗?如果没有,您可能会在您的问题中建议为什么这些方法对您不起作用,以便其他建议可能即将出现。
答案 2 :(得分:0)
以下所有内容均未记录在案,但基于从OP中已列出的帖子中收集的经验。 可能会发布更加可靠的信息。
预计会出现这种情况吗?
不,这与许多人的期望完全不同。
如果没有,问题是什么问题?
看来这种行为在Outlook中是标准的(即,由于配置问题,我在系统中看不到这种行为)。因此,“问题”是Outlook的设计方式。
...我的意思是...找到一个解决方案来恢复这种行为(如果可能的话)......
似乎没有。
...而不是解决方法。
如前所述[{3}}和OP。
PS:由于在某些情况下提出的两个变通办法似乎都不是选项,因此可以尝试编写一个可以用touch ...
(或类似)执行shell命令的宏来设置修改时间。它可能会发现VbaProject.OTM正在使用中,所以人们也必须处理它。这不是一项微不足道的任务。