Я хочу запретить некоторым приложениям на моем компьютере доступ к определенным дискам или логическим томам, но пока не могу найти решение.
Предыстория: мой компьютер имеет SSD в качестве системного диска и 15 ТБ Raid-6 с пятью жесткими дисками. Контроллер сконфигурирован для вращения приводов через ~ 10-15 минут. Это нормально, так как иногда мне не нужно получать доступ к рейду в течение нескольких часов или даже дольше. Некоторые приложения, такие как Adobe Reader, получают доступ ко всем логическим томам при запуске по какой-то причине, которую я не могу понять. Я предполагаю, что затронуты все тома с назначенной буквой диска. Удаление букв и переназначение их вообще не вариант;)
Как я могу ограничить доступ Adobe Reader или других приложений к этим томам на моих хостах Raid?
Ответы:
В 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, если у вас его еще нет.
источник
Я предлагаю решение, которое использует Sandboxie . У меня нет вашей среды, поэтому я протестировал работу
Acrobat.exe
в песочнице, доступ к которойD:
был заблокирован. При открытии в Acrobat меню File> Open , я получаю это:Обратите внимание, что Acrobat не может даже найти метку диска
D:
, поэтому вынужден отображать ее неэффективно и как она блокируется, когда я нажимаю «Local Disk (D :)».Шаги, которые я использовал, были:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe
)D:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat
)С этого момента все программы, запускаемые из папки Acrobat, вынуждены выполнять изолированную программную среду и, в частности
Acrobat.exe
, блокируются для доступа к дискуD:
. Возможно, вам придется открыть некоторые другие ограничения песочницы, если у Acrobat возникнут трудности с выполнением внутри песочницы.Я не знаю, будет ли это также блокировать конкретный вызов Windows API, который Acrobat использует, чтобы вызвать пробуждение диска, но, возможно, стоит попробовать.
Песочница - отличный и универсальный продукт, который я рекомендую, бесплатно для одной песочницы по умолчанию. Для нескольких песочниц это платное ПО, но цена лицензии при жизни очень разумная (я заплатил). Например, я устанавливаю продукты, которые я тестирую, в изолированную программную среду, а затем могу стереть их одним щелчком, без необходимости удаления.
Другое решение для изоляции - использование Adobe Reader внутри контейнера Docker . Контейнеры Docker маленькие и работают как виртуальные машины, но без необходимости создавать машину, поскольку готовые контейнеры загружаются из галереи Docker.
Вы можете использовать Chocolatey в качестве менеджера пакетов.
У Chocolatey есть много готовых готовых пакетов с Adobe Reader в Adobe Acrobat Reader DC 2018.011.20063 .
С Docker возможна абсолютная изоляция в отношении ресурсов, а с другой стороны, можно совместно использовать ресурсы, такие как папки, совершенно естественным образом.
источник