我正在使用一个函数来检查远程计算机上文件的时间戳。我们有很多电脑。
我遇到的有点奇怪。
我在很多计算机上运行查询。Computer26887 上的时间戳显示为“2013 年 1 月 4 日上午 12:46:01”我 UNC 到该计算机并检查文件。在资源管理器中,时间戳显示“2013 年 9 月 16 日上午 11:23”(一个半小时前)嗯......再次查询 - 相同的旧的、错误的时间戳。我右键单击该文件,转到属性并单击属性窗口中的“详细信息”-“修改日期 2013 年 9 月 16 日上午 11:23”再次使用 vb 代码查询-现在它显示正确的时间戳??? ?
我有数百个系统要通过,如果我不能相信我得到的数据,我有太多的工作要做!!!
有任何想法吗?
更新
基本上,VB.NET 正在检索时间戳的缓存版本。时间戳已更新,但缓存中仍有旧的时间戳。如何强制更新缓存而不在资源管理器中手动打开文件的属性?
Shared Function GetFileInfo(ByVal ComputerName As String, ByVal FiletoFind As String, info As String)
Dim Ret As String = ""
Dim targetfile = "\\" & ComputerName & "\" & FiletoFind
Dim fi As FileInfo = New FileInfo(targetfile)
If fi.Exists Then
fi.refresh
Select Case info
Case Is = "Exists"
Ret = fi.Exists.ToString
Case Is = "Delete"
fi.Delete()
Ret = fi.Exists.ToString
Case Is = "Created"
Ret = fi.CreationTime.ToString("MM/dd/yyyy hh:mm:ss tt")
Case Is = "Access"
Ret = fi.LastAccessTime.ToString("MM/dd/yyyy hh:mm:ss tt")
Case Is = "Mod"
Ret = fi.LastWriteTime.ToString("MM/dd/yyyy hh:mm:ss tt")
End Select
Else
Ret = "File Not Found"
End If
Ret = Ret.Replace(vbCrLf, "")
Ret = Ret.Replace(vbCr, "")
Return Ret
End Function
(我也尝试过使用File
而不是FileInfo
......检查帖子历史记录)
更新
作为测试,我使用 AutoIT3 代码对系统进行了文件检查。它返回了准确的信息。在 AutoIT3 检查之后,vb.net 返回了准确的时间戳。那么,AutoIT3 做得更好的 vb.net 的问题是什么?
Func _timestampchk($path)
Dim $file,$astamp
$file = $path
$astamp = FileGetTime($file, 0, 0)
If IsArray($astamp) Then
$stamp = $astamp[1] & "/" & $astamp[2] & "/" & $astamp[0] & " " & $astamp[3] & ":" & $astamp[4]
ElseIf $astamp = 0 Then
$stamp = "File " & $path & " not Found"
Else
$stamp = 0
EndIf
Return $stamp
EndFunc ;==>_timestampchk