本帖最后由 pusofalse 于 2012-5-4 20:25 编辑
PE文件结构中,的确有一个位置记录着编译时间,但并非绝对准确,因为很多编译器只是随便设一个值而已。对于Au3这样的脚本语言而言,编译时间是 解析器的编译时间,而非Au3程序的编译时间。
#include <PeShellX.au3>
#include <WinAPI.au3>
#include <Date.au3>
Const $PE_FILEPATH = @AutoItExe
Local $pLibrary = _WinAPI_LoadLibrary($PE_FILEPATH)
If Not _PeIsValidPE($pLibrary) Then Exit 1
Local $pNtHeader = _PeGetFileHeader($pLibrary)
Local $tNtHeader = DllStructCreate("dword Reserved[2];long TimeDateStamp", $pNtHeader)
Local $iTimeDateStamp = DllStructGetData($tNtHeader, "TimeDateStamp")
Local $sCompileDate = _DateAdd("s", $iTimeDateStamp, "1969/12/31 16:00:00")
MsgBox(0, "Compile Date", $sCompileDate)
_WinAPI_FreeLibrary($pLibrary)
|