Const PESIGNATURE = &H4550&
Const MZSIGNATURE = &H5A4D&
Public Function IsPE(ByVal StrFileName As String) As Boolean
On Error GoTo Xe
Dim rMZ As Integer
Dim rOfs As Long
Dim rFree As Long
Dim rPE As Long
rFree = FreeFile
Open StrFileName For Input As #rFree: Close #rFree
Open StrFileName For Binary Access Read As #rFree
Get #rFree, , rMZ
If (rMZ = MZSIGNATURE) Then
Get #rFree, 61, rOfs
If (rOfs > 61) And (rOfs < LOF(rFree)) Then
Get #rFree, 1 + rOfs, rPE
IsPE = (rPE = PESIGNATURE)
End If
End If
Close #rFree
Xi: Exit Function
Xe: 'MsgBox Err.Description, vbCritical
Resume Xi
End Function