Как определить является ли файл исполняемым?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Собственно нужно написать программу, которая при запуске в текущей папке удаляла все неисполняемые файлы и оставляла исполняемые. Как можно определить является ли файл исполняемым, что с чем нужно сравнить? Или где это у него [файла] можно посмотреть?
Смотри по расширению файла. Исполняемые файлы - это .exe (executable).
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Расширение exe, com + структура PE файлов (ну хотя бы сигнатура MZ в начале файла).
На заказ: VBA, Excel mc-black@yandex.ru
Тогда уже еще *.bat, *.cmd
А *.DLL относить к исполняемым?
А *.DLL относить к исполняемым?
IsPEFile проверяет, является ли файл исполнимым в формате PE. Если это так, то результатом работы функции будет TRUE. Посмотрим на код этой функции:
http://www.xakep.ru/magazine/xa/105/112/1.asp
Код: Выделить всё
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;
}
Это всё ерунда.
Используй функцию LoadLibrary(). Если модуль исполняемый (EXE, DLL, OCX, CPL), то функция вернёт значение HMODULE.
В противном случае вернёт NULL.
Используй функцию LoadLibrary(). Если модуль исполняемый (EXE, DLL, OCX, CPL), то функция вернёт значение HMODULE.
В противном случае вернёт NULL.
а .bat, .cmd и иже с ними?
А здесь уже без внешнего интерпретатора не обойдешься. Если все инструкции в файле без ошибок - то значит исполняемый.
It's a long way to the top if you wanna rock'n'roll
Давайте не путать понятия "исполняемого файла" и файла скрипта, исполняемого другим приложением.
К скриптам можно отнести не только *.cmd и *.bat, но так же и *.vbs, *.js, *.sql, *.php, *.pl и др.
К скриптам можно отнести не только *.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