Эпопея с блокировкой файлов из интернета.
Скачал я как то раз клиент игрушки одной. Большой клиент, много exe и dll файликов. Однако запускаться он не пожелал.
Говорит не могу файлы запускать, изменять - они ж с непроверенного источника, из самого интернета.
Щелкнул свойства файла - вижу надпись:
"Этот файл получен с другого компьютера и, возможно, был заблокирован с целью защиты компьютера." И кнопочка рядом - "Разблокировать".
Нажимая кнопочку - вроде сработало. Дальше всё по правилам - "Применить" и "Ок". Бац - не запускается. Я не в понятках, опять свойства открываю - а он опять заблокирован.
Пошёл в гугль правду искать. Искал искал, набрёл на утилиту снятия блокировки - Streams http://technet.microsoft.com/en-us/sysinternals/bb897440. Со всех файлов снимать блокировку умеет рекурсивно. Запускаю - ан нет, не может снять блокировку. А заместо объяснения почему - знаки вопросиков выводит.
Думал думал и надумал - а вдруг программисты микрософта сделали бяку - забыли что файл может быть с атрибутом "Только для чтения", и потому ошибку при разблокировке не выводят.
Ну, терять то нечего - открыл свойства всей папки, снял атрибут только для чтения - и вуаля, стали разблокироваться файлы. Написал я в консоли слова заветные - "streams -d -s %cd%" и разблокировались все файлы.
Вот такая вот незавидная история. А ведь пару метров нервов я потратил на не убирающуюся блокировку. Но даже программисты из микрософта могут ошибаться - забыли добавить обработку ошибки при снятии блокировки - в результате фиг поймёшь, что происходит.
PS Так же в процессе поисков выяснился механизм данной блокировки - в альтернативных потоках файла прописывается ini файл с меткой зоны, из которой был скачан. Увидеть их можно вызвав команду dir /r в папке с файлом.
Открыть эти файлы не представляется возможным - ругаются программы на некорректные именования файлов. Удалить тоже не получилось. Но есть мнение, что эти ограничения мнимые и прямой вызов функции удаления спокойно выполнит задачу.