3

Я хотел создать ярлык для файла c:\windows\system32\more.com на рабочем столе, используя ctrl+shift и перетаскивание, и он беззвучно игнорировался, ничего не создавая, затем я решил перетащить его в папку в мой рабочий стол и получил это предупреждение:

Windows не может создать ярлык. проверьте, не заполнен ли диск.

У меня есть 157 ГБ свободного дискового пространства, и я также проверил его на других файлах .com (format.com , tree.com т.д.), И результат был таким же. Затем я использовал mklink вместо этого, чтобы создать символическую ссылку, и это сработало, поэтому мне интересно, почему невозможно создать ярлыки для файлов .com в Windows?

PS:

Я использую 64-битную операционную систему Windows 8.1.

2 ответа2

3

Я думаю, что вы вызвали сбой, возможно. Как *.Расширение COM взято из MS-DOS и только для 16-битных двоичных файлов, 32-битная Windows создала ярлык PIF для этих файлов, который запускает уровень совместимости для настройки 16-битной среды. Однако эта часть не существует в 64-битной Windows, так как 16-битные исполняемые файлы достаточно стары и есть много альтернатив для их запуска; DOSBOX например.

Однако, похоже, что процедура обнаружения этой ситуации все еще существует в 64-разрядной версии Windows и запускается при нацеливании на *.COM-файл, пока все слои совместимости исчезли!

Вы можете самостоятельно проверить, что попытка создать ярлык для COM-файла по-прежнему приводит к созданию файла PIF:

  1. Создайте новую пустую папку.
  2. Скопируйте любой COM-файл, который вы хотите проверить. Даже вы можете переименовать любой файл в *.COM.
  3. В папке щелкните правой кнопкой мыши и выберите новый ярлык.
  4. Введите полный путь вашего тестового COM-файла и нажмите "Готово"
  5. Он скажет, что "невозможно создать ярлык", но ярлык на самом деле сделан.
  6. Смотрите свойства нового ярлыка - это PIF.

Однако, поскольку в x64 Windows больше нет 16-битного уровня совместимости, этот PIF не может работать и не может быть правильно настроен. Естественно, что логика создания файлов PIF для COM также должна быть удалена, но по какой-то причине это еще не сделано. О чем я могу догадаться, так это то, что в 64-разрядной версии Windows на самом деле редко используется COM-файл, поэтому его исправление имеет очень низкий приоритет.

Итак, что это за *.COM-файлы в папке Windows, то? На самом деле они являются 64-битными исполняемыми файлами формата EXE, но переименованы в *.COM для старых пакетных скриптов.

Также верно, что ярлык для COM-файла может обмануть пользователей для запуска вредоносного ПО, так что MS намеренно заблокировала это, но все равно можно прикрепить переименованный COM-файл (который изначально является EXE-файлом) непосредственно к электронному письму или чему-то еще в любом случае. и все еще возможно создать ярлык для обычного EXE-файла, а затем переименовать его в *.COM. Поэтому я не думаю, что проблема безопасности была главной причиной, заставляющей Windows вести себя так странно. Если бы это было из-за проблемы безопасности и преднамеренного, это отобразило бы надлежащее сообщение об ошибке / предупреждение.

0

Я предполагаю, что это мера безопасности, поскольку маскировка .com файлов - это общая тактика создателей вредоносных программ. Ярлык может быть замаскирован под словесный документ, чтобы заставить пользователя щелкнуть по нему и выполнить вредоносный код.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .