Расширение оболочки для разблокировки загруженных файлов

Вопрос или проблема

Существует ли расширение оболочки для Проводника Windows, которое добавляет новый элемент контекстного меню, позволяющий разблокировать загруженный файл? Оно должно работать так же, как если бы я открыл свойства файла и нажал кнопку Разблокировать.

Идеально, если такое расширение оболочки также будет отображать значок наложения, чтобы указать, что файл все еще заблокирован.

Существует инструмент от Sysinternals под названием streams.

На этой странице описано, как его использовать. Он не добавляет опцию в контекстное меню, но позволяет разблокировать сразу несколько файлов.

Я также нашел этот пост, который предоставляет файл реестра, который решит эту проблему:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
@="Взять владение"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Взять владение"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

Что, вероятно, ближе к тому, что вы хотите. Скопируйте это в Блокнот, сохраните как что-то.reg на рабочем столе и дважды щелкните, чтобы добавить его в реестр.

Скачайте NTFSext.exe, описанный в этой статье Microsoft статье.
Это сжатый исполняемый файл. Запустите его, чтобы извлечь файлы, затем извлеките из StrmExt.zip dll с именем StrmExt.dll. Скопируйте dll в C:\Windows\System32 и выполните следующую команду:

regsvr32 C:\Windows\System32\StrmExt.dll

Теперь у вас есть новая вкладка в свойствах файла Проводника Windows, которая показывает потоки файла и позволяет их удалять:

image

Небольшое замечание: в программе есть ошибка, при которой, ответив “Нет” на диалоговое окно удаления, поток все равно будет удален. Еще одна ошибка заключается в том, что содержимое потока отображается не очень хорошо. Если вы ищете приключений, и так как исходный код включен, вы можете исправить ошибку (и снова опубликовать dll).

Вам понадобится streams.exe от Sysinternals (упоминаемый выше @ChrisF). Я положил его в папку c:\Windows, так что если вы хотите его в другом месте, вам нужно будет изменить фрагмент реестра ниже соответственно.

В вашем любимом редакторе, похожем на Блокнот, создайте файл и назовите его (например) Unblock.reg. Он должен содержать:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Unblock File]
"Icon"="C:\\Windows\\System32\\Shell32.dll,109"

[HKEY_CLASSES_ROOT\*\shell\Unblock File\Command]
@="\"C:\\windows\\streams.exe\" -d \"%1\""

Когда у вас это будет, дважды щелкните на .reg файле и нажмите “Да”, когда вас спросят, хотите ли вы продолжить.

Вот и все.

Примечание. Я протестировал и использую это в Windows 7. У вас могут быть другие результаты.

Вот еще один вариант (откройте Блокнот, вставьте этот текст, сохраните как .reg и затем дважды щелкните на новом файле):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\powershell]
@="Разблокировать файлы"

[HKEY_CLASSES_ROOT\*\shell\powershell\command]
@="C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe Unblock-File  -LiteralPath \"%1\""

Этот вариант не требует установки дополнительных инструментов, так как PowerShell является частью Windows (по крайней мере в последних версиях), хотя он не предоставляет значка наложения.

Примечание: кредит.

Winaero Tweaker имеет опции как для контекстного меню, так и для отключения поведения блокировки с самого начала.

Хотите ли вы настроить параметры “Профилактика выполнения данных”?
Я никогда не слышал о инструменте для настройки этого непосредственно из контекстного меню, но, возможно, поиск по DEP поможет вам.

Sysinternals хорош.
Вы можете получить источник, используя web.archive.org, и позволить кому-то разработать контекстное меню Internet Explorer за вас на rentacoder.com.

Кто-то это написал, но пока нет доступной x64 версии:
http://www.benf.org/other/alternatestreamoverlay/index.html

Ответ или решение

Вопрос о создании оболочки (shell extension) для Windows Explorer, которая добавляет новый пункт контекстного меню для разблокировки загруженных файлов, является достаточно актуальным в условиях современных требований к безопасности.

Что такое разблокировка файлов?

Когда файл загружается из Интернета, Windows помечает его как потенциально небезопасный, добавляя к нему альтернативный поток данных с атрибутом "блокировано." Это приводит к необходимостью вручную разблокировать файл через свойства, что может быть неудобно при работе с множеством файлов.

Решение — создание оболочки для разблокировки

Вот ряд решений, которые вы можете рассмотреть для создания оболочки с нужной функциональностью:

1. Использование утилиты Streams от Sysinternals

Утилита Streams предназначена для управления потоками данных в файлах NTFS. Вы можете использовать её для разблокировки загруженных файлов. Она не добавляет пункт в контекстное меню, но позволяет эффективно разблокировать несколько файлов одновременно через командную строку.

streams -d <path_to_file>

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

2. Реализация с помощью реестра

Создание файла реестра (.reg), который добавляет контекстный пункт, — это простой и эффективный способ:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Unblock File]
"Icon"="C:\\Windows\\System32\\Shell32.dll,109"

[HKEY_CLASSES_ROOT\*\shell\Unblock File\Command]
@="\"C:\\windows\\streams.exe\" -d \"%1\""

В результате добавится пункт "Разблокировать файл" в контекстное меню. Дважды щелкните на созданный файл для добавления настроек в реестр.

3. Использование PowerShell

Также можно добавить возможность разблокировки через PowerShell, выполнив следующие шаги:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\powershell]
@="Unblock Files"

[HKEY_CLASSES_ROOT\*\shell\powershell\command]
@="C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe Unblock-File -LiteralPath \"%1\""

Этот метод не требует установки дополнительных программ, так как PowerShell уже присутствует в Windows. Однако он не предоставляет визуальных индикаторов блокировки.

4. Графический интерфейс с Winaero Tweaker

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

Заключение

На данный момент существует несколько путей решения проблемы добавления функции разблокировки файлов в контекстное меню Windows Explorer. Однако важным аспектом является тестирование созданного решения на целостность и производительность, чтобы убедиться в том, что оно соответствует вашим требованиям. Выбор подходящего метода будет зависеть от ваших конкретных нужд, предпочтений и уровня комфорта с работой в реестре или в командной строке.

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

Капча загружается...