Запретить доступ приложения к жесткому диску или тому в Windows 7+

12

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

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

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

user654123
источник
Я не знаю, как отключить доступ для определенного приложения. Но я подозреваю, что если для какого-либо приложения есть инструмент, запрещающий доступ к SSD, вы потеряете возможность открывать файлы с этих томов. Поэтому в этом случае лучше попытаться выяснить, какую функцию заставляет Adobe Reader читать / записывать что-либо с / на SSD. Посмотрите на функцию "последние файлы". Может быть, он проверяет их наличие каждый раз.
ВИК
Я хочу ограничить доступ к рейду, а не к SSD. На самом деле на Raid нет ничего, что могло бы пригодиться для Adobe Reader на моем компьютере. Так что, да, в моем случае я явно хочу потерять возможность доступа к чему-либо из Adobe Reader, чего нет на SSD. Вы можете быть правы насчет функции «недавние файлы» (хотя в этом случае нет недавних файлов с этих томов).
user654123
1
Как насчет радикального решения, такого как использование другого средства просмотра PDF? Это не решает проблемы с другими приложениями, но, как я понимаю, Adobe Reader - самая раздражающая вещь для вас. en.wikipedia.org/wiki/List_of_PDF_software
VIK
Да, это самое раздражающее приложение :) Я надеялся, что может быть встроенное решение этой проблемы, поскольку отказ в доступе в Интернет через брандмауэр Windows прекрасно работает для других программ.
user654123
1
Рассматривали ли вы запуск Reader как отдельного пользователя, который не имеет доступа к этим томам?
TWiStErRob

Ответы:

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 возникнут трудности с выполнением внутри песочницы.

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

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


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

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

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

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

harrymc
источник
2
@WackGet: Любой комментарий?
Harrymc
Он говорит, что это не работает, диск все еще вращается, по крайней мере, в его случае использования. Мне интересно, дает ли Sandboxie возможность скрывать ресурсы на аппаратном уровне? Я еще не установил это.
Альбин
@WackGet: Sandboxie имеет больше настроек, доступных в его конфигурационных файлах. Но сначала: просыпаются ли диски в момент запуска Adobe или только при использовании меню « Файл»> «Открыть» ?
Harrymc
Помимо вышеупомянутого вопроса, я добавил еще один легкий вариант изоляции, используя Docker. Docker-контейнеры небольшие и работают как виртуальные машины, но не требуют их создания, поскольку контейнеры уже готовы и загружаются из галереи Docker.
Harrymc
Интересный выбор. На какое Docker-приложение вы ссылаетесь, так как это скорее решение для разработчика или предприятия. К сожалению, докерские продукты, на которые я смотрел, не бесплатны (возможна только пробная версия) ... но, возможно, я упустил s.th.
Альбин