Добавить в корзинуПозвонить
Найти в Дзене
Windows 11, 10, etc

⚙️ Как избавиться от предупреждения в проводнике при копировании файлов на диск, отформатированный в ext4

⚙️ Как избавиться от предупреждения в проводнике при копировании файлов на диск, отформатированный в ext4 Этот вопрос задал в чате Юрий. Он переносил файлы на внешний диск с файловой системой ext4 и получал на каждый исполняемый файл такой запрос: Вы действительно хотите переместить файл без его свойств? Я с ходу предложил использовать консольные средства. Например, в #PowerShell можно копировать файлы и папки командлетом Copy-Item. И это сработало! ☑️ Однако Юрий не желал каждый раз лезть в консоль. Мол, он регулярно копирует файлы с локального диска на внешний. Что ж, для регулярных задач синхронизации файлов в Windows испокон веков есть прекрасная утилита командной строки robocopy! ☑️ Но и это Юрия не устроило. И сторонние файловые менеджеры тоже отметались :) Он оказался маководом и хотел амазинга просто копировать в проводнике. Он также сообщил, что нагуглил в качестве решения утилиту NTFS Stream Explorer. Но опять же, в ней требовались ручные действия перед копированием. //

⚙️ Как избавиться от предупреждения в проводнике при копировании файлов на диск, отформатированный в ext4

Этот вопрос задал в чате Юрий. Он переносил файлы на внешний диск с файловой системой ext4 и получал на каждый исполняемый файл такой запрос:

Вы действительно хотите переместить файл без его свойств?

Я с ходу предложил использовать консольные средства. Например, в #PowerShell можно копировать файлы и папки командлетом Copy-Item. И это сработало! ☑️

Однако Юрий не желал каждый раз лезть в консоль. Мол, он регулярно копирует файлы с локального диска на внешний. Что ж, для регулярных задач синхронизации файлов в Windows испокон веков есть прекрасная утилита командной строки robocopy! ☑️

Но и это Юрия не устроило. И сторонние файловые менеджеры тоже отметались :) Он оказался маководом и хотел амазинга просто копировать в проводнике. Он также сообщил, что нагуглил в качестве решения утилиту NTFS Stream Explorer. Но опять же, в ней требовались ручные действия перед копированием.

////

ℹ️ Здесь в самый раз подходила #классика блога Альтернативные потоки данных NTFS. Юрий нашел в ней твик реестра, но тот не помог. Тогда все-таки пришлось читать, вникать, и вскоре мы увидели примерно такую картину. Я сохранил смысл, но в качестве примера взял свой файл из папки Downloads и сократил вывод до сути.

Get-Item -Path .\*keep*exe -Stream * |

Select-Object pschildname,stream

PSChildName Stream

----------- ------

KeePass-2.57-Setup.exe::$DATA :$DATA

KeePass-2.57-Setup.exe:SmartScreen SmartScreen

Сразу прояснилось множество деталей:

1. Альтернативный поток NTFS пишет SmartScreen.

2. Исполняемый файл скачан в Microsoft Edge, что вытекает из п. 1 и проверяется чтением потока.

3. Потока с идентификатором зоны нет. Он уже удален либо запись отключена политикой ↓

4. Твик с политикой "Не хранить сведения о зоне..." бессилен против п. 1.

Тут школьники посоветуют "отключить SmartScreen". Причем в такой формулировке неочевидно, что конкретно отключать. Однако снижение уровня безопасности (особенно у маковода :) - это не наш путь.

////

Избавиться от предупреждения в проводнике можно без твиков / политик и отключений функций безопасности. Мы знаем, что при загрузке в любом браузере файлы получают поток с идентификатором зоны. Кроме того, в Microsoft Edge к исполняемым файлам свой поток пишет SmartScreen.

✅ Решение укладывается в одну команду. В примере потоки от SmartScreen и диспетчера вложений удаляются из всех файлов в папке "Загрузки" рекурсивно. После чего проводник уже не суетится при их копирование на ext4.

Get-ChildItem -Path $env:USERPROFILE\downloads\ -File -Recurse | Remove-Item -Stream *SmartScreen*, *Zone.Identifier*

Это можно поставить в планировщик хоть ежечасно. В простом задании исполняемым файлом будет powershell, а аргументами

-NoProfile -Ex Bypass -Command "Get-ChildItem -Path $env:USERPROFILE\downloads\ -File -Recurse | Remove-Item -Stream *SmartScreen*, *Zone.Identifier*"

Скрытие консольных окон я разбирал четыре года назад, и с тех пор ничего не изменилось. ✌️