Mega Code Archive

 
Categories / Delphi / Files
 

Getting an exe file type

Title: Getting an exe file type Question: How can I get an exe file type? Answer: Is it useful,I don't know, but sometimes you want to know it. Then, you will use below function which gives us an exe file type. type TExeType = (Unknown, DOS, WinNE, WinPE); const ExeStrings: array[TExeType] of string = ('Unknown', 'DOS', '16Bit', '32Bit'); function ExeFileType(const FileName: string): TExeType; var Signature, HeaderOffsetAddress: Word; FileExe: TFileStream; begin Result := Unknown; try FileExe := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try FileExe.ReadBuffer(Signature, SizeOf(Signature)); if Signature = $5A4D { 'MZ' } then begin Result := DOS; FileExe.Seek($18, soFromBeginning); FileExe.ReadBuffer(HeaderOffsetAddress, SizeOf(HeaderOffsetAddress)); if HeaderOffsetAddress = $40 then begin with FileExe do begin Seek($3C, soFromBeginning); ReadBuffer(HeaderOffsetAddress, SizeOf(HeaderOffsetAddress)); Seek(HeaderOffsetAddress, soFrombeginning); ReadBuffer(Signature, SizeOf(Signature)); end; if Signature = $454E { 'NE' } then Result := WinNE else if Signature = $4550 { 'PE' } then Result := WinPE; end; end; finally FileExe.Free; end; except end; end; //sample call; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(ExeStrings[ExeFileType('C:\windows\calc.exe')]); end;