Ошибка — «Файл заблокирован, так как получен из интернета»: массовое снятие блокировки через PowerShell

Системная блокировка файлов, загруженных из интернета или полученных по локальной сети, обусловлена работой встроенного в Windows механизма защиты Mark of the Web (MOTW). При скачивании операционная система записывает в файловую систему NTFS скрытый альтернативный поток данных (Alternate Data Stream, ADS) с именем :Zone.Identifier. Наличие этого метчика блокирует запуск исполняемых файлов, выполнений скриптов PowerShell/VBS, а также запуск макросов в документах Microsoft Office. Массовое и автоматизированное снятие этого ограничения реализуется с помощью командлета Unblock-File в PowerShell.

Экспресс-проверка наличия блокировки

  • Проверка наличия скрытого потока Zone.Identifier у конкретного файла: Get-Item -Path "C:Downloadssetup.exe" -Stream "Zone.Identifier".
  • Тестовая разблокировка одного файла для проверки прав доступа: Unblock-File -Path "C:Downloadssetup.exe".
  • Проверка текущего уровня политики выполнения скриптов: Get-ExecutionPolicy.
  • Запуск консоли PowerShell с повышенными привилегиями: комбинация клавиш Win + XТерминал (Администратор) или PowerShell (Администратор).

Методы массового снятия блокировки файлов

  1. Рекурсивное снятие блокировки всех файлов в каталоге через PowerShell:Для снятия блокировки со всех файлов в указанной папке и всех её подкаталогах откройте PowerShell от имени администратора и выполните команду:Get-ChildItem -Path "D:SharesDownloads" -Recurse | Unblock-File

    Если в директории находятся файлы, занятые другими процессами, подавите вывод ошибок доступа с помощью ключа -ErrorAction:

    Get-ChildItem -Path "D:SharesDownloads" -Recurse -ErrorAction SilentlyContinue | Unblock-File -ErrorAction SilentlyContinue

  2. Оптимизированное снятие блокировки только с заблокированных объектов:Для ускорения обработки больших массивов данных предварительно отфильтруйте только те файлы, которые содержат атрибут Zone.Identifier, избегая лишних операций ввода-вывода:Get-ChildItem -Path "C:Data" -Recurse | Get-Item -Stream "Zone.Identifier" -ErrorAction SilentlyContinue | Remove-Item
  3. Полное отключение сохранения зоны происхождения через Локальную групповую политику (GPO):Для предотвращения блокировки новых скачиваемых файлов нажмите Win + R, введите gpedit.msc и нажмите Enter.Пройдите по пути: Конфигурация пользователя → Административные шаблоны → Компоненты Windows → Диспетчер вложений (User Configuration → Administrative Templates → Windows Components → Attachment Manager).

    Откройте параметр Не сохранять сведения о зоне происхождения файлов (Do not preserve zone information in file attachments) и переведите его в состояние Включено (Enabled).

    Примените изменения в командной строке: gpupdate /force.

  4. Отключение метки зоны через системный реестр Windows:Нажмите Win + R, введите regedit и откройте раздел:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesAttachments

    Создайте параметр DWORD (32 бита) с именем SaveZoneInformation и присвойте ему значение 1.

Сводная таблица параметров Zone.Identifier и команд снятия блокировки

Значение ZoneID Источник / Зона безопасности Поведение системы Команда/Метод очистки
0 My Computer (Локальный компьютер) Ограничения отсутствуют Не требуется
1 Local Intranet (Локальная сеть) Минимальные предупреждения для исполняемых файлов Unblock-File -Path "C:PathFile.ext"
2 Trusted Sites (Надежные узлы) Запуск разрешен в соответствии с политиками браузера Unblock-File -Path "C:PathFile.ext"
3 Internet (Интернет) Запуск блокируется, отображается предупреждение, блокируются макросы Office Get-ChildItem -Recurse | Unblock-File
4 Restricted Sites (Опасные сайты) Полный запрет на открытие и запуск файла в ОС streams.exe -d -s "C:Path"

Нестандартные причины и альтернативные решения

В случаях когда стандартный командлет Unblock-File завершает работу с ошибками или не удаляет метку с файлов, используйте специализированный инструментарий и системные корректировки:

  • Удаление альтернативных потоков через Sysinternals Streams: При повреждении дескрипторов безопасности скачайте официальную утилиту Sysinternals streams.exe. Запустите cmd.exe от имени администратора и выполните очистку всех потоков данных:streams.exe -d -s "C:Downloads"
  • Ошибки при обработке файлов на сетевых ресурсах (SMB / NAS): При попытке разблокировать файлы, находящиеся на сетевой шаре (например, \192.168.1.50share), PowerShell может выдать ошибку отказа в доступе. Добавьте IP-адрес хранилища 192.168.1.50 в зону интрасети: нажмите Win + Rinetcpl.cplБезопасность → Локальная интрасеть → Сайты → Дополнительно → добавьте file://192.168.1.50.
  • Обход ограничений ExecutionPolicy в текущей сессии: Если система блокирует запуск самого PowerShell-скрипта, выполняющего разблокировку, временно понизьте уровень защиты для текущего процесса:Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
  • Особенности работы с архивами и файловыми системами FAT32/exFAT: Файловые системы FAT32 и exFAT не поддерживают альтернативные потоки NTFS. При распаковке архива, содержащего метку зоны, на NTFS-диск, блокировка наследуется всеми извлеченными файлами. Для предотвращения этого выполняйте снятие блокировки с самого ZIP/RAR архива до момента его распаковки:Unblock-File -Path "C:Downloadsarchive.zip"
  • Прямое обнуление альтернативного потока через cmd.exe без использования PowerShell: В средах Windows PE или урезанных редакциях Windows Server Core при отсутствии подсистемы PowerShell удалите метчик зоны с помощью штатного перенаправления потоков ввода-вывода командного процессора:echo. > "C:\Path\File.exe:Zone.Identifier"

    Для пакетного обнуления потоков во всем каталоге выполните цикл в cmd.exe:

    for /r "C:\TargetFolder" %i in (*) do (echo. > "%i:Zone.Identifier")

  • Удаление системного запрета SmartScreen через AppLocker и SRP: Если после очистки потока Zone.Identifier запуск блокируется защитником Windows SmartScreen с кодом 0x80070005, сбросьте кэш репутационной проверки в реестре Windows:reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AppHost" /v "SmartScreenPUID" /f

    Для полного отключения перехвата исполняемых файлов компонентом SmartScreen выполните команду от имени Администратора:

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System" /v "EnableSmartScreen" /t REG_DWORD /d 0 /f

  • Коррекция списков управления доступом (DACL) утилитой icacls: При получении ошибки «Отказано в доступе» (UnauthorizedAccessException) во время снятия атрибутов снимите флаги блокировки прав и верните владение объектами локальной группе администраторов:takeown /F "C:\TargetFolder" /R /A /D Y

    icacls "C:\TargetFolder" /reset /T /C /Q

    После восстановления дескрипторов безопасности повторно инициируйте процедуру массового снятия блокировки через Unblock-File.


Добавить комментарий