Windows ругается на файлы, скачанные из интернета, что делать

Наверняка почти каждый из вас сталкивался с ситуацией, когда исполняемый файл установщика какой-либо программы, скачанный из интернета, отказывался запускаться просто так. Вместо этого Windows выкидывала предупреждение о безопасности, мол, вы действительно хотите запустить файл krutayaproga.exe от неизвестного издателя, или всё-таки подумаете. Разумеется, можно нажать “Да”, да ещё и поставить флаг, мол, больше не спрашивать, но проблему это не решит и, когда вы скачаете программу с другого сайта, вы снова увидите этот запрос. Знаю многих людей, которые пытались отключить это дело через реестр, отключение SmartScreen и защитника Windows, однако, не знаю, помогло ли им это. Точно знаю, что в таких случаях помогает копирование такого файла на флешку, отформатированную в fat32 и обратно. Однако, во-первых, бывают установщики и размером более 4 гб, так что на fat32 они просто не влезут, а во-вторых это навело меня на кое-какие размышления, о которых я напишу ниже.

И так, раз при копировании на флешку и обратно это гадливое предупреждение исчезает, значит дело тут в файловой системе ntfs, вернее в том, что в ней есть что-то такое, чего нет в fat32 и что безвозвратно теряется при копировании с тома ntfs на том fat32. Имена в юникоде? Да, их нет в fat32, но англоязычные имена файлов всё равно порождают это гадливое предупреждение. Иной способ организации хранения файлов? Журналирование? Индексирование? Двоичные деревья? Всё оно не подходит к нашему случаю. Так что же подходит? А вот что. в ntfs появилось новое понятие – файловые потоки (file streams). Любой файл на томе ntfs может содержать кроме основного потока сколько угодно иных потоков. Проведите эксперимент. Для этого очень желательно, чтобы у вас был Total Commander.

  • Войдите в любую папку и создайте в ней файл test.txt, например, по комбинации клавиш shift+f4;
  • Откройте его и что-нибудь напишите, например, “это первый тест;
  • Сохранитесь;
  • Теперь нажмите shift+f4, сотрите всё, что там написано, и напишите вот так: test.txt:test2, после чего нажмите enter;
  • В открывшемся пустом окне редактора напишите что-нибудь, например, “Это второй тест”;
  • Теперь проделайте то же самое, что и во втором пункте, только после двоеточия напишите test3 вместо test2;
  • Снова откроется пустое окно редактора, в котором вы можете написать, например, “Это третий тест”.

Что получилось после наших экспериментов? Получилось то, что наш файл test.txt имеет три файловых потока:

  • Поток по умолчанию, который сформировался при создании файла и в котором мы написали “Это первый тест”;
  • Поток с именем test2, в котором мы написали “Это второй тест”;
  • Поток с именем test3, в котором мы написали “Это третий тест”.

После примера с файловыми потоками, думаю, вы уже догадались, что при скачивании файлов из интернета, система добавляет к ним какой-то файловый поток и, если Windows “видит” такой поток у исполняемых файлов, то при запуске на выполнение такого exe-шника она обязательно будет “ругаться.
Что же это за поток? Сведения о том, откуда конкретно был скачан файл, Windows сохраняет в потоке “zone identifier”. Для примера перед написанием этого поста я скачал с официального сайта последнюю версию архиватора 7zip. Давайте посмотрим, что содержится в потоке zone.identifier.

[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://www.7-zip.org/download.html
HostUrl=https://www.7-zip.org/a/7z1900.exe

Вот на это всё и “Ругается” Windows. Отсюда вывод: чтобы не заниматься глупостями с копированием на флешку и обратно и при этом сделать так, чтобы Windows не “ругалась на скачанные файлы, поток zone.identifier надо удалить. Как это сделать? Есть два способа. Способ безопасный:

  • скачайте и установите, если ещё не установили, архиватор 7zip;
  • Откройте приложение 7Zip file manager;
  • Найдите в нём файл, скачанный из интернета;
  • Вызовите контекстное меню файла и откройте пункт “Альтернативные потоки”;
  • Найдите поток zone identifier и удалите его, нажав клавишу delete.

Второй способ: открыть поток в ручную и удалить всё, что там написано. Показываю на примере Total Commander-а.

  • Найдите тоталом скачанный файл;
  • Находясь на нём, нажмите shift+f4;
  • Переместитесь в конец строки, поставьте двоеточие и напишите zone.identifier;
  • Нажмите enter;
  • В открывшемся окне редактора нажмите ctrl+a и за тем delete, чтобы выделить весь текст и удалить его;
  • Сохранитесь.

Всё, вы только что удалили штуку, из-за которой Windows “Ругалась на файлы, скачанные из интернета.

Вообще же… Файловые потоки – очень интересная вещь, с ними можно делать много чего интересного. Если интересно, что же именно с ними можно делать, спрашивайте, отвечу.

Опубликовано yuniks

Самый злобный человек на земле

Оставьте комментарий