Впервые с блокировкой файлов, скачанных из интернета или почты я столкнулся когда переносил файловый сервер. Наш сервер на Windows Server 2003 R2 приказал долго жить. Пока он ещё был в состояни и хоть как-то работать, был поднят новый сервер на базе Debian 6 и Samba 3. Разумеется все доменные фичи вроде Kerberos и Windbind также были подняты. И вот наступила ночь переноса данных.

Я столкнулся с тем, что Windows не дает скопировать файл, полученный из интернета или по почте. Для копирования требовалось открыть свойства файла и установить галочку «разблокировать», что учитывая объем данных, напрягало.

Alt text

При открытии такого документа Word использует защищенный режим.

Alt text

Просмотр потоков на наличие блокировок

Причем здесь альтернативные потоки? Давайте посмотрим все потоки данных для заблокированного файла. Для этого воспользуемся PowerShell командлетом Get-Item с параметром -Stream *

Get-Item LAPS_Datasheet.docx -Stream * 

Alt text

И PowerShell радостно нам рапортует о наличии двух потоков:

:$DATA — собственно данные самого файла

Zone.Identifier — это поток намекает на происхождение файла.

Давайте прочтем содержимое потока. Для этого воспользуемся PowerShell командлетом Get-Content с параметром -Stream Zone.Identifier

Get-Content LAPS_Datasheet.docx -Stream Zone.Identifier

Alt text

Видим, что файл получен из третьей зоны. За пояснениями обратимся к KB182569. Если кратко, то вот описание зон — файл получен из интернета.

Alt text

Есть разные утилиты, позволяющие работать с потоками. Та же Streams весьма хороша. Но мы рассмотрим PowerShell. Итак, что можно сделать с блокировкой файлов? Пути два: удалить поток или снять блокировку :

Удаление потока

Удалить поток можно всё тем-же PowerShell:

Remove-Item -Path LAPS_Datasheet.docx -Stream Zone.Identifier

Как видим, его больше нет:

Alt text

Снятие блокировки

Один файл я разблокировал, но ничего — их есть у меня. Вооружаемся всё тем-же PowerShell

Unblock-File LAPS_OperationsGuide.docx

Alt text

На снимке видно, что я проверил наличие блокировки, снял её и убедился в отсутствии.

Alt text

Снимать блокировку можно оптом:

dir *.docx |Unblock-File

Alt text

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