Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
 Аватар для nazavrik
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130

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

01.10.2009, 13:38. Показов 5025. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно нужно написать программу, которая при запуске в текущей папке удаляла все неисполняемые файлы и оставляла исполняемые. Как можно определить является ли файл исполняемым, что с чем нужно сравнить? Или где это у него [файла] можно посмотреть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2009, 13:38
Ответы с готовыми решениями:

Ошибка "exe не является исполняемым файлом"
При запуске программы выдает вот такую ошибку, раньше было все нормально, не знаю что делать, уже часов 5 роюсь в инете инфу нормальную не...

Определить, является ли файл исполняемым
Добрый день! Есть в с++ очень хорошая функция - SHGetFileInfo, с ее помощью, в частности, можно определить является файл исполняемым....

Определить, что файл является исполняемым и запустить его
Вот такой вот вопрос, как мне определить исполнительный файл. Задача такая, нужно написать программу которая запускает исполнительные файлы...

10
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
01.10.2009, 13:41
любой исполняемый файл начинается с MZ-заголовка (исторически сложилось еще с DOS-времён)
дальше могут быть PE, NE, CLR-заголовки...
1
 Аватар для nazavrik
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
01.10.2009, 13:43  [ТС]
Да, это я знаю. Как добраться до заголовка и сравнить?
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
01.10.2009, 13:45
открыть файл в бинарном режиме, прочитать блок данных (структуры можно найти в гоогле) и распарсить его
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
01.10.2009, 21:24
любой исполняемый файл начинается с MZ-заголовка
Вообще говоря в com-файлах нет MZ-заголовка.

И смотря что именно понимать под словом "исполняемый".
Есть например
Code
1
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
01.10.2009, 21:35
odip
Вообще говоря в com-файлах нет MZ-заголовка.
я про "исполняемый" - от слова executable, то есть EXE-файлы. а в exe оно есть. P)
хотя формально да, com'ы пока ещё поддерживаются

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.J S;.JSE;.WSF;.WSH;.PSC1
Сами по себе они не запускаются. Из "выполнение" обеспечивается программой-хостом
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
01.10.2009, 21:36
А PATHEXT в Windows ?
Это тоже вроде как исполняемые файлы.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
01.10.2009, 21:44
А PATHEXT в Windows ?
Это тоже вроде как исполняемые файлы.

наcколько я в курсе, это просто примочка, чтобы можно было набирать проcто file.yyy, а не some_program file.yyy
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
01.10.2009, 21:46
Только в PATH_EXT и есть .com и .exe
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
01.10.2009, 21:51
я думаю, что если их убрать, ничего не изменится.
оно скорее всего лезет в реестр для данного расширения, и ищет ассоциированную open-команду.
а для exe/com это есть %1, то есть сам файл
0
 Аватар для nazavrik
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
02.10.2009, 14:22  [ТС]
IsPEFile проверяет, является ли файл исполнимым в формате PE. Если это так, то результатом работы функции будет TRUE. Посмотрим на код этой функции:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2009, 14:22
Помогаю со студенческими работами здесь

Как сделать файл исполняемым?
Доброго времени суток всем. Не могу делать файлы исполняемыми и собственно запускать. Есть файл созданный в Qt Creatore, его нужно...

Как определить, является ли файл пустым?
Как проверить и записать такое: если файл не содержит ни одного символа (ни одной строки???), вывести сообщение ELSE сделать что-то другое,...

Исполняемым файл jar, не работает
День добрый. Есть утилитка, которая обрабатывает табличные файлы dbf, использует библиотеку DBF_JDBC30_OK, рабоче через hxtt и т.д. Так...

Сделать файл исполняемым и вывести его в консоли
Здравствуйте. Подскажите пожалуйста я уже не знаю что делать, надо сделать файл исполняемым и вывести его в консоли убунту. Сохранила файл...

Определить, является ли файл текстовым
Добрый день! Есть ли какой-нибудь способ определить является файл текстовым или нет?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru