width="84%">判断一个程序是否dos版本
将文件头读进来,判断是否Exe
offset(0) -$5a45 'MZ'
offset($80) = 'PE' WIN32 EXE
offset($100) = 'NE' WIN16 EXE
e_magic:SmallInt
buffer:array[0..255] of byte;
FStream:TFileStream;
FStream:=TFileStream.Create(Filename,fmOpenRead+fmShareDenyNone);
Try
FStream.Read(buffer,256);
if SmallInt(buffer[0]) <>$5A4D then
FIsMSDos:=False
else
FIsMSDos:=True;
nPos:=$80
if (buffer[nPos+0]='P') and (buffer[nPos+1]='E') and (buffer[nPos+2]=#0) and
(buffer[nPos+3]=#0) then
FIsPE:=True;
finally
FStream.Free;
nPos:=$100
if (buffer[nPos+0]='N') and (buffer[nPos+1]='E') then
FIsNE:=True;
