Разница между dll и exe
DLL - это сокращение от Dynamic Link Library (динамически загружаемая библиотека).
С формальной точки зрения DLL - особым образом оформленный относительно независимый блок исполняемого кода.
Особый способ оформления предполагает наличие в DLL так называемых секций импорта и экспорта. Секция экспорта указывает те идентификаторы объектов (функций, классов, переменных), доступ к которым предоставляет данная DLL. В этом случае мы говорим об экспортировании идентификаторов из DLL. В общем случае, именно секция экспорта предоставляет особый интерес для разработчиков. Хотя ничто не мешает реализовать DLL, которая не имеет данной секции, но, тем не менее, выполняет полезную работу.
Относительная независимость связана с наличием/отсутствием секции импорта у DLL (т.е. секции, в которой описываются внешние зависимости данной DLL от других). Подавляющее большинство DLL (за исключением, быть может, DLL ресурсов) импортирует функции из системных DLL (kernel32.dll, user32.dll, gdi32.dll и др.). В большинстве случае при создании проекта в его опциях автоматически проставляется стандартный набор таких библиотек. Иногда в этот список необходимо добавить требующиеся для Ваших задач DLL (например, в случае использования библиотеки сокетов требуется дополнительно подключить библиотеку ws2_32.dll).
"Исполняемый" код в DLL не предполагает автономного использования. Перед тем, как можно будет приступить к использованию, необходимо загрузить DLL в область памяти вызывающего процесса (т.е. DLL не может выполняться сама по себе - ей обязательно нужен клиент). Это явление носит название "проецирование DLL на адресное пространство процесса". И это не удивительно, если вспомнить тот факт, что процессор работает не только с регистрами, но и с адресами памяти. Поэтому каждому объекту DLL требуется свое место "под солнцем", чтобы иметь возможность быть выполненным при вызове. В конечном коде exe-файла, который генерирует компилятор, не будет инструкций процессора, соответствующих коду данной функции. Вместо этого будет сгенерирована инструкция вызова соответствующей функции (call). Так как DLL отображена на адресное пространство процесса, то код DLL будет легко доступен по call-вызову.
Итак, формально, DLL - особым образом оформленный программный компонент, доступ к исполняемому коду которого приложение получает в момент старта (DLL неявной загрузки) или в момент использования (DLL явной и отложенной загрузки).
Что же касается физического представления на диске, то разница между dll- и exe-файлами небольшая. Как динамически линкуемые библиотеки, так и исполняемые модули приложений в Windows имеют формат Portable Executable (PE-файл), однако вы не можете "запустить" DLL-библиотеку на выполнение, как обычное приложение. "Узнать" DLL-файл можно по его сигнатуре (заголовку): признаком библиотеки является установленный флаг IMAGE_FILE_DLL (13-й бит) в поле Characteristics заголовка IMAGE_FILE_HEADER (эти константы описаны в файле winnt.h; подробная информация о формате exe- и dll-файлов - см. MSDN "Microsoft Portable Executable and Common Object File Format Specification"). Кроме того, в заголовках файлов динамически линкуемых библиотек указан нулевой размер стека - это связано с тем, что функции DLL используют стек вызывающего приложения. DLL-файл может содержать как инструкции (команды процессора), так и данные (разделяемые ресурсы).
В общем случае, файл, являющийся динамически загружаемой библиотекой, не обязан иметь расширение .dll. Например, известные файлы *.cpl - это не что иное, как DLL, используемые апплетом панели управления; *.ocx - DLL, содержащие внутрипроцессные (inproc) COM-объекты.
Логическое (философское) представление DLL не имеет никаких ограничений. Удобно представлять себе DLL в виде сервера, который предлагает дополнительную функциональность Вашему приложению. Приложения, которые используют данную функциональность, являются клиентами DLL. Рисунок 1.1 показывает процесс взаимодействия приложения с DLL. После проецирования DLL на адресное пространство вызывающего процесса DLL становится частью этого процесса. Поэтому возможен абсолютно безболезненный вызов функций, экспортируемых DLL.
Зачем нужны DLL?
Предпосылки к появлению DLL
Свою историю DLL ведут с средины 60-х годов прошлого столетия, однако по-настоящему широкое распространение динамически линкуемые библиотеки получили после появления операционной системы Windows.
По крайней мере, доподлинно известно, что операционные системы Windows 3.1/3.11 уже содержали программы, использующие DLL. В связи с тем, что в те времена емкости оперативной памяти и жесткого диска были значительно меньше, чем сейчас, использование DLL предоставляло ряд преимуществ:
- экономия дискового пространства за счет многократного использования кода (reusing). Если приложения используют один и тот же код, нет необходимости поставлять его в коде каждого приложения. Достаточно разработать DLL.
- экономия физической памяти (RAM) за счет загрузки в нее единственного экземпляра DLL. Именно тогда появились счетчики ссылок пользователей DLL - при каждом вызове функции ОС проверяет наличие загруженного в память экземпляра библиотеки. В случае положительного ответа счетчик ссылок пользователей данной DLL увеличивается на единицу. Если же экземпляр данной DLL в памяти не обнаружен, то операционная система загружает файл в память и присваивает счетчику значение "1". Механизм разделения кода носит название memory mapping (отображение в память). При выгрузке DLL из памяти уменьшается значение счетчика числа пользователей, в случае равенства его нулю DLL немедленно выгружается.
- изолирование и модификация кода DLL независимо от остального кода программы. Например, код визуализации изолируется от математической части. При изменении математического аппарата (например, при разработке нового, более быстрого алгоритма) перекомпиляция кода клиентского приложения (отвечающего за визуализацию результатов) не требуется. Этот фактор может играть значительную роль в том случае, если число клиентов достаточно велико.
Зачем нужны DLL сейчас?
Основные направления использования DLL:
- всевозможные модули расширения функциональности приложений - так называемые plug-in (см. пример с MatLab, Far и пр.);
- локализация приложения (подробнее об этом в разделе "DLL, содержащие только ресурсы");
- разделение объектов абстракции (функций, классов и пр.) между приложениями;
- независимость модификации кода - DLL может быть в любой момент переписана с сохранением экспортируемых интерфейсов;
- реализация определенных действий, которые можно совершить только при помощи DLL - см. раздел "Перехват API-вызовов";
- хранилище ресурсов с возможностью независимого изменения этих ресурсов.
Что лучше: один EXE-файл и никаких DLL или компактный EXE-файл и много DLL?
Что ж, основные отличия заключаются в следующем:
исполняемый
- EXE всегда выполняется в собственном адресном пространстве, т. Е. Это отдельный процесс.
- Назначение EXE - запустить отдельное собственное приложение.
DLL
- DLL всегда нуждается в хосте exe для запуска. т.е. он никогда не может работать в собственном адресном пространстве.
- Задача DLL - иметь набор методов / классов, которые можно повторно использовать из другого приложения.
- DLL - это реализация Microsoft разделяемой библиотеки.
Формат файлов DLL и exe практически одинаков. Windows распознает разницу между DLL и EXE через PE-заголовок в файле. Подробнее о заголовке PE можно прочитать в этой статье на MSDN.
Итак, если вы хотите, чтобы вы могли переименовать и отредактировать заголовок файла, чтобы превратить dll в exe и наоборот?Разница в том, что у EXE есть точка входа, «основной» метод, который запускается при выполнении.
Код в DLL необходимо вызывать из другого приложения.
Это неправильная загрузка, это означает, что у DLL нет точек входа. Библиотеки DLL могут иметь точку входа DLLMain, которая вызывается, когда (среди прочего) DLL загружается в процессВы могли бы упомянуть еще несколько отличий относительно структуры.
Вы можете прочитать больше по этой теме @ MSDN .
1. Поскольку это флаги, оба могут быть установлены одновременно. 2. Как вы сказали, это возможно, но исчезающе маловероятно. 3. ASLR также переместит исполняемый файл, если сможет. Так что да, даже у exe могут быть перестановки. В общем, EXE, которые являются DLL, возможны, но редко .Этот ответ был немного более подробным, чем я думал, но прочитайте его.
DLL:
в большинстве случаев файл DLL представляет собой библиотеку . Есть несколько типов библиотек, динамические и статические - читайте о различиях . DLL выступает за динамическую связь библиотеки , которая говорит нам , что это часть программы , но не все это. Он состоит из многократно используемых программных компонентов ( библиотеки ), которые вы можете использовать более чем для одной программы . Имейте в виду, что всегда можно использовать исходный код библиотеки во многих приложениях с помощью копирования и вставки, но идея DLL / статической библиотеки заключается в том, что вы можете обновить код библиотеки и в то же время обновить все приложения, используя это - без компиляции.
Например:
представьте, что вы создаете компонент графического интерфейса Windows, такой как кнопка . В большинстве случаев вы захотите повторно использовать написанный код, потому что это сложный, но общий компонент - вы хотите, чтобы его использовали многие приложения, но вы не хотите предоставлять им исходный код. Вы не можете скопировать -Вставьте код кнопки в каждую программу, чтобы вы решили создать DL-библиотеку (DLL) .
Эта библиотека «кнопок» требуется для запуска EXE- файлов, и без нее они не будут работать, потому что они не знают, как создать кнопку, а знают только, как с ней разговаривать.
Точно так же DLL не может быть запущена - запущена, потому что это только часть программы, но не имеет информации, необходимой для создания «процесса» .
EXE:
исполняемый файл - это программа . Он знает, как создать процесс и как общаться с DLL. Она нуждается в DLL , чтобы создать кнопку, и без него приложение не запускается - ERROR.
Ну, основные различия:
EXE
- EXE всегда работает в своем собственном адресном пространстве, т.е. это отдельный процесс.
- Цель EXE-файла - запустить отдельное собственное приложение.
DLL
- DLL всегда требуется exe-хост для запуска. то есть он никогда не сможет работать в своем собственном адресном пространстве.
- Цель DLL состоит в том, чтобы иметь коллекцию методов/классов, которые можно повторно использовать из какого-либо другого приложения.
- DLL - это реализация общей библиотеки Microsoft.
Формат файла DLL и exe по существу одинаков. Windows распознает разницу между DLL и EXE через PE Header в файле. Для получения дополнительной информации о PE заголовке, Вы можете посмотреть эту статью на MSDN
Разница в том, что EXE имеет точку входа, «основной» метод, который будет запускаться при исполнении.
Код внутри DLL должен вызываться из другого приложения.
Есть еще несколько различий, касающихся структуры, которую вы могли бы упомянуть.
Вы можете прочитать больше на эту тему @ MSDN .
Этот ответ был немного более подробным, чем я думал, но прочитал его до конца.
DLL:
В большинстве случаев файл DLL представляет собой library. Есть несколько типов библиотек, динамических и статических - читайте о разнице . DLL означает динамическая ссылка library , которая говорит нам, что это part программы, но не все это. Он состоит из программных компонентов многократного использования ( library ), которые вы можете использовать для более одной программы. Имейте в виду, что всегда можно использовать исходный код библиотеки во многих приложениях, использующих копирование-вставку, но идея DLL/статической библиотеки заключается в том, что вы можете обновить код библиотеки и одновременно обновить все приложения, используя это - без компиляции.
Например:
Представьте, что вы создаете компонент Windows GUI как кнопка. В большинстве случаев вы захотите повторно использовать код, который вы написали, потому что это сложный, но общий компонент - вы хотите, чтобы его использовали многие приложения, но вы не хотите давать им источник Код Вы не можете скопировать и вставить код для кнопки в каждой программе, поэтому вы решаете, что хотите создать DL-библиотеку (DLL) .
Эта "button" библиотека требуется для запуска EXE cutables, и без нее они не будут работать, потому что они не знают, как создать кнопку, только как с ней разговаривать ,.
Аналогично, DLL нельзя выполнить - запустить, потому что это только часть программы, но нет информации, необходимой для создания "процесса" .
EXE:
Исполняемый файл: программа. Он знает, как создать процесс и как общаться с DLL. Это необходимо DLL для создания кнопки, и без этого приложение не запускается - ОШИБКА.
надеюсь это поможет.
Динамически подключаемая библиотека (DLL) является библиотекой и поэтому не может быть выполнена напрямую. Если вы попытаетесь запустить его, вы получите ошибку об отсутствующей точке входа. Для выполнения требуется точка входа (основная функция), эта точка входа может быть любым приложением или exe. DLL привязка происходит во время выполнения. Вот почему она называется «Динамическая ссылка» библиотека.
Исполняемый файл (EXE) - это программа, которая может быть выполнена. У него есть собственная точка входа. Флаг внутри PE-заголовка указывает, какой это тип файла (независимо от расширения файла). Заголовок PE имеет поле, в котором находится точка входа для программы. В DLL это не используется (или, по крайней мере, не как точка входа).
Есть много программного обеспечения доступны для проверки информации заголовка. Единственная разница, заставляющая оба работать по-разному, - это бит в заголовке, как показано на диаграмме ниже.
EXE-файл имеет только одну основную запись, что означает, что это изолированное приложение, когда система запускает exe, новый процесс создается, в то время как библиотеки DLL имеют много точек входа, поэтому, когда приложение использует его, новый процесс не запускается, DLL можно использовать повторно и создавать версии , DLL уменьшает объем памяти, так как разные программы могут использовать одну и ту же DLL.
1) DLL-файл - это библиотека динамических ссылок, которую можно использовать в exe-файлах и Других dll-файлах.
EXE-файл - это исполняемый файл, который запускается в отдельном Процессе, управляемом ОС.
2) DLL не являются непосредственно исполняемыми. Это отдельные файлы, содержащие функции, которые могут вызываться программами и другими библиотеками DLL для выполнения вычислений и функций.
EXE - это программа, которая может быть выполнена. Пример: программа для Windows
3) Повторное использование
DLL: их можно использовать для других приложений. Пока кодер знает имена и параметры функций и процедур в файле DLL.
EXE: только для определенной цели.
4) DLL будет совместно использовать тот же процесс и пространство памяти вызывающего приложения, пока
EXE создает отдельный процесс и пространство памяти.
5) Использование
DLL: вы хотите, чтобы многие приложения использовали его, но не хотите давать им исходный код. Вы не можете скопировать и вставить код для кнопки в каждой программе, поэтому вы решаете, что хотите создать DL- Библиотека (DLL).
EXE: когда мы работаем с шаблонами проектов, такими как приложения Windows Forms, консольные приложения, приложения WPF и службы Windows, они генерируют сборку exe при компиляции.
6) Сходства:
Как DLL, так и EXE являются двоичными файлами, имеют сложную вложенную структуру, определяемую форматом Portable Executable, и они не предназначены для редактирования пользователями.
Две вещи: расширение и флаг заголовка хранятся в файле.
Оба файла являются файлами PE. Оба содержат одинаковый макет. DLL является библиотекой и поэтому не может быть выполнена. Если вы попытаетесь запустить его, вы получите ошибку об отсутствующей точке входа. EXE - это программа, которая может быть выполнена. У него есть точка входа. Флаг внутри PE-заголовка указывает, к какому типу файла это относится (независимо от расширения файла). Заголовок PE имеет поле, в котором находится точка входа для программы. В DLL это не используется (или, по крайней мере, не как точка входа).
Одно небольшое отличие состоит в том, что в большинстве случаев DLL имеют раздел экспорта, в который экспортируются символы. EXE-файлы никогда не должны иметь раздел экспорта, поскольку они не являются библиотеками, но ничто не препятствует этому. Загрузчик Win32 не заботится в любом случае.
Кроме этого они идентичны. Итак, вкратце, EXE - это исполняемые программы, а DLL - это библиотеки, загружаемые в процесс и содержащие некие полезные функции, такие как безопасность, доступ к базе данных или что-то еще.
dLL является коллекцией многоразового использования функции где .exe является исполняемый файл, который может вызывать их функции
.Exe это программа. .Dll - это библиотека, в которую может быть вызван .exe (или другой .dll).
То, что sakthivignesh говорит, может быть верным в том, что один .exe может использовать другой, как если бы это была библиотека, и это делается (например) с некоторыми компонентами COM. В этом случае «ведомый» .exe - это отдельная программа (строго говоря, отдельный процесс - возможно, запущенный на отдельной машине), но тот, который принимает и обрабатывает запросы от других программ/компонентов/чего угодно.
Однако, если вы просто выбираете случайные файлы .exe и .dll из папки в ваших программных файлах, скорее всего, COM не имеет значения - это всего лишь программа и ее динамически связанные библиотеки.
Используя Win32 API, программа может загружать и использовать DLL с помощью функций API LoadLibrary и GetProcAddress, IIRC. В Win16 были похожие функции.
Exe - исполняемая программа, тогда как A DLL - это файл, который может загружаться и выполняться программами динамически.
● .exe - это отдельный исполняемый файл, что означает, что он может выполняться напрямую.
● .dll - это компонент многократного использования, который не может быть выполнен напрямую, и для его выполнения требуются Другие программы.
Разница в DLL и EXE:
1) DLL - это внутрипроцессный компонент, который означает работу в том же пространстве памяти, что и процесс клиента. EXE является компонентом Out-Process, что означает, что он работает в своем отдельном пространстве памяти.
2) DLL содержит функции и процедуры, которые могут использовать другие программы (повышает удобство использования), в то время как EXE нельзя использовать совместно с другими программами.
3) DLL нельзя выполнить напрямую, поскольку они предназначены для загрузки и запуска другими программами. EXE - это программа, которая выполняется напрямую.
Ключевые области покрыты
1. Что такое DLL
2. Что такое exe
3. В чем разница между dll и exe
Основные условия
dll, библиотека динамических ссылок, exe, исполняемые файлы, расширения файлов
Что такое dll
Файл DLL загружается только тогда, когда он используется. Следовательно, это уменьшает время загрузки и необходимую память. Файлы DLL могут быть разделены между несколькими программами. Поэтому несколько программ могут использовать одни и те же файлы DLL, не дублируя их. Кроме того, эти файлы предоставляют функциональные возможности другой программе. Например, можно использовать dll таким образом, чтобы одна программа могла создавать функции для отображения в другой. С другой стороны, DLL-файлы не могут быть выполнены напрямую. Они могут быть загружены и запущены другими программами.
Что такое exe
Exe является расширением исполняемого файла. Исполняемый файл выполняет набор инструкций при открытии файла. Эти файлы могут быть скомпилированы программами или скриптами. Исполняемый файл компилируется из исходного кода в двоичный машинный код, который непосредственно исполняется процессором.
Неисполненные исполняемые файлы называются скриптами. Скрипт содержит набор инструкций. Пользователь может открыть эти файлы в текстовых редакторах и просмотреть код. Эти сценарии требуют интерпретатора для запуска. Например, для выполнения сценария Python требуется интерпретатор Python, а для выполнения сценария PHP требуется интерпретатор PHP. Если правильный интерпретатор недоступен, скрипт откроется в виде простого текстового файла. В качестве исполняемых файлов запускайте код при открытии. Поэтому пользователям следует соблюдать осторожность при открытии исполняемых файлов, получаемых с вложениями электронной почты.
Определение
Количество файлов
Кроме того, в одном пакете приложения есть как минимум один исполняемый файл. Там может быть или не быть один или несколько файлов DLL.
зависимость
Другое важное различие между dll и exe состоит в том, что, хотя dll-файлы используются другими приложениями, exe-файл может работать независимо.
Требуемое пространство памяти
Кроме того, файл DLL требует минимального объема памяти, в то время как исполняемый файл требует больше памяти.
Ссылка:
1. «Исполняемый файл». Определение плагиата,
Разница между .dll и .exe?
Я хочу знать точную разницу между dll и exe файлом.
Что ж, основные отличия заключаются в следующем:
Формат файлов DLL и exe практически одинаков. Windows распознает разницу между DLL и EXE через PE-заголовок в файле. Подробнее о заголовке PE можно прочитать в этой статье на MSDN.
Разница в том, что у EXE есть точка входа, «основной» метод, который запускается при выполнении.
Код в DLL необходимо вызывать из другого приложения.
Вы могли бы упомянуть еще несколько отличий относительно структуры.
Вы можете прочитать больше по этой теме @ MSDN .
Этот ответ был немного более подробным, чем я думал, но прочитайте его.
Эта библиотека «кнопок» требуется для запуска EXE- файлов, и без нее они не будут работать, потому что они не знают, как создать кнопку, а знают только, как с ней разговаривать.
И DLL, и EXE являются форматами Portable Executable (PE)
Executable (EXE) это программа , которая может быть выполнена. У него есть собственная точка входа. Флаг внутри заголовка PE указывает, какой это тип файла (независимо от расширения файла). Заголовок PE имеет поле, в котором находится точка входа для программы. В библиотеках DLL он не используется (по крайней мере, не как точка входа).
EXE-файл имеет только одну основную запись, что означает, что это изолированное приложение, когда система запускает exe, создается новый процесс, в то время как библиотеки DLL имеют много точек входа, поэтому, когда приложение использует его, новый процесс не запускается, DLL можно повторно использовать и версировать. DLL уменьшает пространство для хранения, поскольку разные программы могут использовать одну и ту же dll.
2) DLL не являются исполняемыми напрямую. Это отдельные файлы, содержащие функции, которые могут вызываться программами и другими библиотеками DLL для выполнения вычислений и функций.
DLL с возможностью повторного использования: их можно повторно использовать для других приложений. Пока кодировщик знает имена и параметры функций и процедур в файле DLL.
EXE: только для определенной цели.
4) DLL будет совместно использовать тот же процесс и пространство памяти вызывающего приложения, в то время как
EXE создает свой отдельный процесс и пространство памяти.
DLL: вы хотите, чтобы многие приложения использовали его, но вы не хотите предоставлять им исходный код. Вы не можете скопировать и вставить код для кнопки в каждой программе, поэтому вы решаете, что хотите создать DL- Библиотека (DLL).
EXE: когда мы работаем с шаблонами проектов, такими как приложения Windows Forms, консольные приложения, приложения WPF и службы Windows, они создают сборку exe при компиляции.
DLL, так и EXE являются двоичными файлами, имеют сложную вложенную структуру, определяемую форматом Portable Executable, и они не предназначены для редактирования пользователями.
Две вещи: расширение и флаг заголовка, хранящиеся в файле.
Одно небольшое отличие состоит в том, что в большинстве случаев библиотеки DLL имеют раздел экспорта, в который экспортируются символы. EXE никогда не должны иметь раздела экспорта, поскольку они не являются библиотеками, но ничто не мешает этому. Загрузчику Win32 все равно.
Используя Win32 API, программа может загружать и использовать DLL, используя функции LoadLibrary и GetProcAddress API, IIRC. Подобные функции были и в Win16.
Разница в DLL и EXE:
2) DLL содержит функции и процедуры, которые могут использоваться другими программами (способствует повторному использованию), в то время как EXE не может использоваться совместно с другими программами.
Для тех, кто ищет краткий ответ,
Если сборка скомпилирована как библиотека классов и предоставляет типы для использования другими сборками, то она имеет расширение ifle .dll(библиотека динамической компоновки) и не может выполняться автономно.
Основное точное различие между DLL и EXE в том, что у DLL нет точки входа, а у EXE есть. Если вы знакомы с c ++, вы можете увидеть, что build EXE имеет функцию входа main (), а DLL нет
В чем разница между DLL и EXE?
Что такое EXE и DLL?
Для чего используется файл DLL?
Расшифровывается как «Библиотека динамической компоновки». Файл DLL (.dll) содержит библиотеку функций и другую информацию, к которой может получить доступ программа Windows. При запуске программы ссылки на необходимые. dll создаются.
В чем разница между сборкой и DLL?
Для чего используется EXE?
Как мне прочитать файл DLL?
На каком языке написана DLL?
В файлах DLL используются такие языки, как C или C ++, хотя C ++ встречается чаще. Вы можете написать свои собственные библиотеки DLL для запуска необходимого кода, если хотите научиться это делать.
Почему отсутствуют DLL-файлы?
Обновите драйверы. Иногда вы пропадаете. dll при использовании такого оборудования, как принтер. Эта ошибка может быть связана с более старой версией драйвера, несовместимой с обновленной.
Стоит ли удалять файлы DLL?
dll Файлы устанавливаются программами во время их установки. Эти файлы содержат код, который сообщает программам, как работать. Если вы удалите. dll, программы могут работать некорректно. Мы предлагаем вам не удалять эти файлы, поскольку они могут вызвать серьезные проблемы с правильной работой компьютера.
Как создать файл DLL?
Создайте проект DLL
В чем разница между пространством имен и сборкой?
.Exe означает вирус?
Почему .exe страшно?
Игры .exe не пугают своим названием. Расширение файла .exe (Executable) было расширением файла приложения Windows с момента зарождения Windows. Нет никакой реальной причины произносить exe в названии, если бы не драматический эффект. Такие игры, как sonic.exe, созданы на основе копий пасты.
Безопасен ли EXE-файл?
Почему расширение файла потенциально опасно? Эти расширения файлов потенциально опасны, поскольку могут содержать код или выполнять произвольные команды. Файл .exe потенциально опасен, потому что это программа, которая может делать что угодно (в рамках функции контроля учетных записей Windows).
Читайте также: