12

Я хочу запретить некоторым приложениям на моем компьютере доступ к определенным дискам или логическим томам, но пока не смог найти решение.

Предыстория: мой компьютер имеет SSD в качестве системного диска и 15 ТБ Raid-6 с пятью жесткими дисками. Контроллер сконфигурирован для вращения приводов через ~ 10-15 минут. Это хорошо, так как иногда мне не нужно получать доступ к рейду в течение нескольких часов или даже дольше. Некоторые приложения, такие как Adobe Reader, получают доступ ко всем логическим томам при запуске по какой-то причине, которую я не могу понять. Я предполагаю, что затронуты все тома с назначенной буквой диска. Удаление букв и переназначение их вообще не вариант;)

Как я могу ограничить доступ Adobe Reader или других приложений к этим томам на моих хостах Raid?

2 ответа2

6

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

Право на доступ определяется правами вошедшего в систему пользователя, который запускает приложение. Так что, если разработчик программного обеспечения решил, что его программное обеспечение должно искать все доступные диски и не дает вам возможности отключить это ... что ж, это плохое программирование, которое не учитывает ваш конкретный вариант использования. Но есть несколько обходных путей.

Единственное "верное" решение - 2, поскольку уровень виртуализации оборудования (с виртуальной машины) может блокировать любые приложения, чтобы попытаться получить полный доступ к "реальному оборудованию". Хотя у меня не было случая, когда решение 1 не работает, но теоретически я думаю, что его можно обойти.

Опция "1" - Отключение дисков на "низком уровне" - Никакого дополнительного программного обеспечения не требуется

Вариант 1а

Можно отключить тома на нижнем уровне, полностью отключив диски, но это отключит все тома на диске. Вручную вы можете сделать это, запустив diskmgmt.msc , затем щелкнув правой кнопкой мыши на диске и отметив его как "отключенный".

При необходимости вы можете сделать это, используя скрипт командной строки. Он будет применяться аналогично варианту 3a/b. Вы можете сделать это, например, через cmd, как описано здесь, или через PowerShell, как описано здесь.

Вариант 1б

Вы можете полностью отключить драйвер накопителя. Чтобы сделать это вручную: запустите diskmgmt.msc , затем щелкните правой кнопкой мыши, выберите "Параметры". Затем перейдите в "Драйвер" -Tab и выберите "Деактивировать". Диск "исчезнет" в диспетчере дисков и больше не будет доступен через операционную систему. Если программное обеспечение не выполняет команды машинного кода для прямой связи с оборудованием, приложение не должно иметь доступа к дискам. По крайней мере, насколько мне известно о плюсах и минусах операционных систем.

При необходимости вы можете сделать это, используя скрипт командной строки. Он будет применяться аналогично варианту 3a/b с использованием, например, Devcon.exe . Вы можете найти подробное описание здесь .

Вариант 2 - Использование виртуальной среды (в основном со сторонним программным обеспечением)

Если запуск приложения в виртуальной среде вообще возможен, существует множество решений:

  • В зависимости от версии Windows (требуется Win7 и выше) и лицензии (требуется "Professional", "Home" не подойдет), вы можете просто использовать Hyper-V для настройки виртуальной среды без какого-либо программного обеспечения сторонних производителей.

  • Вы можете использовать стороннее программное обеспечение для настройки виртуальной системы, такой как VMplayer, Virtual Box и т. д. Существует множество бесплатных и платных альтернатив. При использовании этого решения вам понадобится вторая лицензия для Windows (или вы оставите ее нелицензионной, но в правом нижнем углу экрана появится наложение, которое скажет вам зарегистрировать Windows). Это определенно предотвратит доступ программного обеспечения к диску.

  • Вы можете использовать приложение "песочница". Но это будет зависеть от уровня виртуализации, которую предлагает песочница-приложение. В некоторых случаях это может решить проблему; в других случаях это не так. Песочница, например (тот, что harrymc описывает в своем ответе), не решает проблему с конфигурацией harrymc, описанной в его (оригинальном) ответе. Хотя программное обеспечение может блокировать доступ, диск все равно будет вращаться. Альтернативой может быть использование другого приложения для песочницы, такого как Cameyo и т.д.

Кстати, вот хорошая статья о главном различии между различными программами виртуализации, особенно о разнице между "целой" виртуальной машиной (например, Virtual Box) или «полу-виртуальными» приложениями (например, Sandboxie).

Вариант 3 - Размонтирование только томов (оставив диск "нетронутым") - Никакого дополнительного программного обеспечения не требуется, НО он может не работать в вашем случае

Вариант 3а

Вместо запуска приложения с помощью обычного ярлыка вы можете написать командный файл с помощью команды mountvol которая сначала размонтирует неиспользуемый том, затем запускает приложение и затем перемонтирует том, когда приложение больше не обращается к диску. Процесс монтажа / демонтажа через командную строку описан здесь и здесь. Вы также можете использовать diskpart как описано здесь и здесь.

Вариант 3б

Кроме того, вы можете просто оставить диск отключенным и подключить его через пакетный файл, который монтирует диск, который вы запускаете вручную, когда это необходимо. После того, как вы закончили использовать его, вы можете вручную размонтировать его, используя второй пакетный файл. Вы можете автоматизировать это, отслеживая запросы доступа к файловой системе и монтируя / размонтируя диск, как требуется, следуя определенным правилам, например, что определенные приложения не будут иметь доступа. Но я не уверен, что автоматизация стоит дополнительных усилий.

Вариант 4 - Ограничение доступа к букве диска (тома). Просто сделать, но нужны два небольших инструмента от Microsoft - НО это может не сработать в вашем случае

Если вы хотите сделать это без стороннего программного обеспечения, но не против использовать два небольших инструмента от Microsoft (если вы еще не используете его). Я предпочитаю это решение, потому что оно получает проблему "от корня" (различие между правами пользователя и приложения), и оно довольно простое и не требует "большого" стороннего программного обеспечения.

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

  • Добавьте учетную запись пользователя.

  • Ограничьте доступ новой учетной записи пользователя к диску с помощью Windows Access Control для файловой системы. Вот хороший How-To, включая скриншоты.

  • Затем запустите программное обеспечение с этими правами. Вы можете, например, использовать PsExec.exe для этого или Process Explorer, вот как. Один из этих двух вам придется загрузить с веб-сайта Microsoft, если у вас его еще нет.

4

Я предлагаю решение, которое использует Sandboxie. У меня нет вашей среды, поэтому я протестировал запуск Acrobat.exe в песочнице, где его доступ к D: был заблокирован. При открытии в Acrobat меню File> Open, я получаю это:

образ

Обратите внимание, что Acrobat не может даже найти метку диска D: , поэтому он вынужден отображать ее неэффективно, и как она блокируется, когда я нажимаю на «Local Disk (D:)».

Шаги, которые я использовал, были:

  • Установленная песочница
  • В Sandboxie Control щелкните правой кнопкой мыши на изолированной программной среде по умолчанию и выберите « Параметры песочницы».
  • Откройте ветку « Доступ к ресурсам»> «Доступ к файлам» и нажмите « Заблокированный доступ».
  • Нажмите Добавить программу и добавьте Acrobat (у меня был C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe)
  • Нажмите кнопку Добавить и добавьте диск D:
  • Нажмите ОК
  • В Sandboxie Control откройте ветку « Запуск программы»> «Принудительные папки».
  • Нажмите Добавить папку
  • Добавьте папку, в которой находится Acrobat (у меня был C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat)
  • Нажмите ОК

С этого момента все программы, запускаемые из папки Acrobat, вынуждены выполнять изолированную программную среду , и, в частности, Acrobat.exe блокируется от доступа к диску D: Вам может потребоваться открыть некоторые другие ограничения в песочнице, если у Acrobat возникнут трудности с выполнением внутри песочницы.

Я не знаю, будет ли это также блокировать конкретный вызов API Windows, который Acrobat использует, чтобы вызвать пробуждение диска, но, возможно, стоит попробовать.

Песочница - отличный и универсальный продукт, который я рекомендую, бесплатно для одной песочницы по умолчанию. Для нескольких песочниц это платное ПО, но цена лицензии при жизни очень разумная (я заплатил). Например, я устанавливаю продукты, которые я тестирую, в изолированную программную среду, а затем могу стереть их одним щелчком мыши, без необходимости удаления.


Другое решение для изоляции - использование Adobe Reader внутри контейнера Docker. Контейнеры Docker маленькие и работают как виртуальные машины, но без необходимости создавать машину, поскольку готовые контейнеры загружаются из галереи Docker.

Вы можете использовать Chocolatey в качестве менеджера пакетов.

У Chocolatey есть много готовых готовых пакетов с Adobe Reader в Adobe Acrobat Reader DC 2018.011.20063.

С помощью Docker возможна абсолютная изоляция в отношении ресурсов, а с другой стороны, можно совместно использовать ресурсы, такие как папки, совершенно естественным образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .