Определить тип EXE-файла 2Delphi , Программа и Интерфейс , EXE файлОпределить тип EXE-файла 2
Оформил: DeeCo type TExeType = (etUnknown, etDOS, etWinNE {16-bit}, etWinPE {32-bit}); function GetExeType(const FileName: string): TExeType; { func to return the type of executable or dll (DOS, 16-bit, 32-bit). } (************************************************************** Usage: with OpenDialog1 do if Execute then begin Label1.Caption := FileName; Label2.Caption := ExeStrings[GetExetype(FileName)]; end; - or - case GetExeType(OpenDialog1.FileName) of etUnknown: Label3.Caption := 'Unknown file type'; etDOS : Label3.Caption := 'DOS executable'; etWinNE : {16-bit} Label3.Caption := 'Windows 16-bit executable'; etWinPE : {32-bit} Label3.Caption := 'Windows 32-bit executable'; end; ***************************************************************) var Signature, WinHdrOffset: Word; fexe: TFileStream; begin Result := etUnknown; try fexe := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try fexe.ReadBuffer(Signature, SizeOf(Signature)); if Signature = $5A4D { 'MZ' } then begin Result := etDOS; fexe.Seek($18, soFromBeginning); fexe.ReadBuffer(WinHdrOffset, SizeOf(WinHdrOffset)); if WinHdrOffset >= $40 then begin fexe.Seek($3C, soFromBeginning); fexe.ReadBuffer(WinHdrOffset, SizeOf(WinHdrOffset)); fexe.Seek(WinHdrOffset, soFrombeginning); fexe.ReadBuffer(Signature, SizeOf(Signature)); if Signature = $454E { 'NE' } then Result := etWinNE else if Signature = $4550 { 'PE' } then Result := etWinPE; end; end; finally fexe.Free; end; except end; end; procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then case GetExeType(OpenDialog1.FileName) of etUnknown: Label_ExeType.Caption := 'Unknown file type'; etDOS : Label_ExeType.Caption := 'DOS executable'; etWinNE : Label_ExeType.Caption := 'Windows 16-bit executable'; etWinPE : Label_ExeType.Caption := 'Windows 32-bit executable'; end; end; Программный код на Delphi определяет тип исполняемого файла (DOS, Windows 16-разрядный или Windows 32-разрядный) на основе его сигнатуры. Описание работы функции:
Процедура Примечания:
В целом, этот код предоставляет простой способ определить тип исполняемого файла на основе его сигнатуры. Однако для более сложных или надежных проверок вы можете захотеть использовать более sophisticate методы, такие как разбор заголовка PE (для Windows-исполняемых файлов) или анализировать структуру и содержимое файла более тщательно. Определение типа EXE-файла с помощью Delphi-скрипта, позволяющего определить тип файла (DOS, 16-bit Windows или 32-bit Windows) на основе его сигнатуры. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |