Как определить является ли файл исполняемым?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

nazavrik
Сообщения: 11
Зарегистрирован: 29 сен 2009, 13:12

Собственно нужно написать программу, которая при запуске в текущей папке удаляла все неисполняемые файлы и оставляла исполняемые. Как можно определить является ли файл исполняемым, что с чем нужно сравнить? Или где это у него [файла] можно посмотреть?
Dragon
Сообщения: 99
Зарегистрирован: 01 окт 2009, 11:21
Откуда: Odessa
Контактная информация:

Смотри по расширению файла. Исполняемые файлы - это .exe (executable).
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Расширение exe, com + структура PE файлов (ну хотя бы сигнатура MZ в начале файла).
На заказ: VBA, Excel mc-black@yandex.ru
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Тогда уже еще *.bat, *.cmd
А *.DLL относить к исполняемым?
nazavrik
Сообщения: 11
Зарегистрирован: 29 сен 2009, 13:12

IsPEFile проверяет, является ли файл исполнимым в формате PE. Если это так, то результатом работы функции будет TRUE. Посмотрим на код этой функции:

Код: Выделить всё

BOOL CPEFile::IsPEFile(VOID)

{

DWORD tmp;

m_hPEFile.SeekToBegin();

m_hPEFile.Read(&DOSHdr, sizeof(DOSHeader));

if(DOSHdr.Signature != MZ_SIGN) return FALSE;

dwOffsetToPEhdr = DOSHdr.OffsetToPEHeader;

m_hPEFile.Seek(dwOffsetToPEhdr, CFile::begin);

m_hPEFile.Read(&tmp, sizeof(DWORD));

if(tmp != PE_SIGN) return FALSE;

return TRUE;

}
http://www.xakep.ru/magazine/xa/105/112/1.asp
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Это всё ерунда.
Используй функцию LoadLibrary(). Если модуль исполняемый (EXE, DLL, OCX, CPL), то функция вернёт значение HMODULE.
В противном случае вернёт NULL.
_SG
Сообщения: 53
Зарегистрирован: 28 фев 2009, 10:43
Откуда: Севастополь

а .bat, .cmd и иже с ними?
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

А здесь уже без внешнего интерпретатора не обойдешься. Если все инструкции в файле без ошибок - то значит исполняемый.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Давайте не путать понятия "исполняемого файла" и файла скрипта, исполняемого другим приложением.
К скриптам можно отнести не только *.cmd и *.bat, но так же и *.vbs, *.js, *.sql, *.php, *.pl и др.
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Исполняемыми файлами в Windows являются *.exe (32 и 64 бит) и 16-битные *.com Исполняемым является файл, который запускается загрузчиком Windows, а не другими программами. Нельзя считать исполняемыми файлы, которые с другими расширениями запускаются при помощи асоциации в реестре Windows при помощи отдельной программы (скрипты), поскольку скрипты этим сильно похожи на документы. Только в отличие от документов, файл которых определяет Содержание, скрипты определяют Поведение выполняющей их программы. В этом смысле скрипты сами являются программами, но неправильно файлы скриптов было бы называть исполняемыми файлами.
На заказ: VBA, Excel mc-black@yandex.ru
Ответить