В 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, если у вас его еще нет.