Где в Windows 7 хранится «предупреждающая» информация о .LNK? (И как убрать предупреждение)

308
LSerni

У меня установлена ​​программа. Неважно, какой.

Если дважды щелкнуть исполняемый файл, он запускается без проблем.

Если я создаю ссылку на панели задач или в строке меню, при щелчке по ссылке открывается диалоговое окно с предупреждением: «Открыть файл - Предупреждение безопасности», в котором говорится: «Хотя файлы из Интернета могут быть полезны, этот тип файлов может нанести вред вашему компьютеру». ,

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

Если я создаю ссылку на рабочем столе, а затем копирую ее в строке меню, а затем перемещаю ссылку в той же строке меню, я получаю две ссылки в одной строке меню.

Первый открывает диалог. Второго нет: он напрямую открывает приложение.

В этот момент мне стало любопытно: в чем разница между двумя файлами?

  • имя файла: нет
  • содержимое файла: нет. У них одинаковый хэш MD5.
  • Атрибуты: нет радости, они имеют одинаковые атрибуты.
  • возможно, альтернативный поток данных? Могло быть - но нет. Ни к одному .LNK-файлу не прикреплено ADS.
  • в реестре? Не имеет особого смысла, но опять же, похоже, в реестре ничего нет на этот счет.
  • Метаданные MFT? Я пытался использовать этот инструмент и, возможно, допустил некоторую ошибку, но я не нашел ничего очевидного (я не слишком уверен, что не было, заметьте).

Я попытался взглянуть на метаданные $ MFT и обнаружил разницу, значение которой я не знаю, между полями «Общая информация» этих двух файлов. NTFS Explorer сообщает, что разделы идентичны; на самом деле это не так. После полей даты и атрибутов DOS есть две различные шестнадцатеричные последовательности:

File1 00 00 00 00 88 03 00 00 00 00 00 00 00 00 00 00  10 45 41 22 00 00 00 00  File2 00 00 00 00 A6 03 00 00 00 00 00 00 00 00 00 00  18 44 41 22 00 00 00 00 

Если бы разница составляла только один бит, я был бы уверен, но это не так. Я не слишком оптимистичен относительно случайного изменения $ MFT, чтобы посмотреть, что произойдет - я немного боюсь того, что может произойти. И более того, мне кажется глупым, что не лишенная смысла операция (« удалите предупреждение из этой ссылки здесь »), для которой даже существует обходной путь easyiy found (« создайте ссылку на рабочем столе и переместитесь оттуда туда, где она действительно есть») надо идти ") должно быть так сложно и даже нужен сторонний инструмент.

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

Так где это хранится? И есть ли простой способ его удаления (в следующий раз)?

1

1 ответ на вопрос

1
LSerni

Информация фактически находилась в зоне DACL и может быть отредактирована из командной строки с помощью соответствующего инструмента .

Это удаляет предупреждение из «filename.lnk» (должно быть запущено из командной оболочки, я использую CMD для старых времен):

ICACLS filename.lnk /SetIntegrityLevel M /L 

Целое дерево каталогов ссылок может быть обработано с помощью

ICACLS *.lnk /T /L /SetIntegrityLevel M 

побежал из корневой папки.

Я думаю, что было бы возможно создать операцию оболочки («Разблокировать»), которая могла бы запустить команду ICACLS при щелчке правой кнопкой мыши на файле .LNK. Начальное руководство можно найти здесь (Vista, но Seven не должен быть слишком другим).

Создать команду меню «Разблокировать»

  1. Откройте REGEDITутилиту. Применяются обычные меры предосторожности. REGEDIT может разрушить вашу систему!
  2. Откройте HKEY_CLASSES_ROOTулей.
  3. Найдите lnkfileзапись.
  4. Щелкните правой кнопкой мыши по lnkfile и выберите «Создать> Ключ».
  5. Создайте новый ключ с именем «shell».
  6. Повторите описанные выше шаги, чтобы создать ключ «Unblock» внутри «shell».
  7. Повторите выше, чтобы создать «команду» внутри «Разблокировать»
  8. Измените значение по умолчанию для ключа разблокировки, чтобы он читал

    CMD.EXE /S /C "ICACLS %1 /L /SetIntegrityLevel med" 

Закрыть REGEDIT.

Теперь найдите LNK, который доставлял вам неприятности. Щелкните по нему правой кнопкой мыши; Вы должны увидеть запись «Разблокировать» в меню. Выберите это.

Появляется приглашение UAC, с которым необходимо согласиться, и может также появиться предупреждение, проверяющее, действительно ли вы это делаете.

Теперь, если дважды щелкнуть ссылку, приложение будет запущено без каких-либо проблем. Если у вас было предупреждение UAC, а не предупреждение об открытии файла, описанной выше процедуры недостаточно. Вам также необходимо щелкнуть правой кнопкой мыши ссылку и в ее свойствах выбрать «Запуск от имени администратора» (возможно, вам придется сделать то же самое с самим приложением).

Протестировано и работает на Windows 7 Pro и Ultimate.

Работает на Windows 10 тоже. john16384 6 лет назад 0