在Windows 7+中拒绝应用程序访问硬盘或卷


12

我想拒绝计算机上的某些应用程序访问某些驱动器或逻辑卷,但到目前为止找不到解决方案。

背景:我的PC有一个SSD作为系统驱动器和一个15TB Raid-6 w /五个硬盘驱动器。控制器配置为在约10-15分钟后旋转驱动器。这很好,因为有时我不需要几个小时甚至更长的时间就可以访问Raid上的任何内容。由于某些原因而无法启动时,某些应用程序(例如Adobe Reader)会在启动时访问所有逻辑卷。我的假设是所有分配了驱动器号的卷都会受到影响。删除字母并重新分配它们根本不是一个选择;)

如何限制Adobe Reader或其他应用程序访问Raid托管的这些卷?


我不知道如何禁用某些应用程序的访问。但是我怀疑,如果有一种工具可以拒绝某些应用程序访问SSD,那么您将无法打开该卷中的文件。因此,在这种情况下,最好尝试找出是什么功能使Adobe Reader从SSD读取/向SSD写入内容。查看“最近的文件”功能。也许它每次都检查其可用性。
2013年

我想限制对Raid的访问,而不是对SSD的访问。实际上,Raid上的任何卷都没有任何内容,这对我的计算机上的Adobe Reader毫无用处。因此,是的,在我的情况下,我明确地希望失去从Adobe Reader中访问SSD上没有的内容的功能。不过,您可能对“最近文件”功能是正确的(尽管在这种情况下,这些卷中没有任何最新文件)。
user654123

1
彻底的解决方案(例如使用另一个PDF查看器)如何?这不能解决其他应用程序的问题,但是据我了解,Adobe Reader对您来说最令人讨厌。zh.wikipedia.org/wiki/List_of_PDF_software
VIK 2013年

是的,这是最令人讨厌的应用程序:)我希望可能有针对该问题的内置解决方案,因为通过Windows防火墙拒绝Internet访问对于其他程序也能正常工作。
user654123

1
您是否考虑过以无法访问这些卷的单独用户身份运行Reader?
TWiStErRob

Answers:


6

在Windows中,没有本机支持的方法来阻止某些进程访问某些驱动器,这“违背了当前的本质”操作系统如何处理驱动器访问。

访问权限由启动应用程序的登录用户权限确定。因此,如果软件开发人员决定他的软件应该搜索所有可访问的驱动器,并且没有为您提供关闭该驱动器的选项...那么,那是不好的编程,它没有考虑您的特定用例。但是,有一些解决方法。

唯一的“确定”解决方案是2,因为硬件虚拟化层(来自虚拟机)可以阻止任何应用程序尝试完全访问“真实硬件”。尽管我还没有解决方案1无效的情况,但是从理论上讲,我认为可以绕开它。

选项“ 1”-在“低级别”禁用驱动器-不需要其他软件

选项1a

可以通过完全禁用驱动器来禁用较低层的卷,但这将禁用驱动器上的所有卷。手动启动,您可以通过启动diskmgmt.msc,然后右键单击驱动器并将其标记为“离线”来完成。

在此处输入图片说明

如果需要,您也应该能够使用命令行脚本来执行此操作。将采用与选项3a / b类似的方法。您可以例如通过此处所述的cmd 或此处所述的PowerShell 来实现

选项1b

您可以完全停用驱动器的驱动程序。要手动执行:开始diskmgmt.msc,然后右键单击,选择“选项”。然后转到“ Driver” -Tab,然后选择“ Deactivate”。该驱动器将“消失”在磁盘管理器中,并且将无法再通过操作系统进行访问。除非软件不执行直接与硬件通信的机器代码命令,否则应用程序将无法访问驱动器。至少就我对操作系统的来龙去脉的了解而言。

在此处输入图片说明

如果需要,您也应该能够使用命令行脚本来执行此操作。例如,使用与选项3a / b类似的方法Devcon.exe。您可以在此处找到详细说明。

选项2-使用虚拟环境(通常与第三方软件一起使用)

如果完全可以在虚拟环境中运行应用程序,那么有很多解决方案:

  • 根据您的Windows版本(需要Win7及更高版本)和许可证(不需要“专业”,而不能使用“家庭”),您可以使用Hyper-V来设置虚拟环境,而无需任何第三方软件。

  • 您可以使用第三方软件来建立虚拟系统,例如VMplayer,Virtual Box等。有许多免费软件和付费软件替代品。通过使用此解决方案,您将需要Windows的第二个许可(或者您不许可它,但随后您会在屏幕的右下角看到一个覆盖,告诉您注册Windows)。这肯定会阻止软件访问驱动器。

  • 您可以使用“沙盒”应用程序。但这将取决于沙盒应用程序提供的虚拟化级别。在某些情况下,它可以解决问题;在其他情况下,事实并非如此。例如,Sandboxie(一个harrymc在他的答案中描述了该问题)无法解决他(原始)答案中所描述的配置harrymc的问题。尽管该软件可能会阻止访问,但驱动器仍将处于启动状态。一种替代方法是使用不同的沙箱应用程序,例如Cameyo等。

顺便说一下,这是一篇有关不同虚拟化软件之间主要区别的好文章,尤其是“整个”虚拟机(例如Virtual Box)或“半虚拟”应用程序(例如Sandboxie)之间的区别。

选项3-仅卸载卷(使驱动器“完好无损”)-不需要其他软件,但是在您的情况下可能无法使用

选项3a

您可以使用以下命令编写批处理文件,而不是通过常规快捷方式启动该应用程序mountvol:首先卸载未使用的卷,然后启动该应用程序,然后在该应用程序不再访问驱动器后重新安装该卷。此处此处介绍通过命令行进行的安装/卸载过程。您也可以diskpart此处此处所述使用。

选项3b

或者,您可以只卸载驱动器,然后通过批处理文件将其装入,该批处理文件将装入需要时手动启动的驱动器。使用完后,您可以使用第二个批处理文件手动卸载它。您可以通过监视文件系统访问请求并根据某些规则(例如,某些应用程序无权访问)按要求安装/卸载驱动器来实现自动化。但是我不确定自动化是否值得付出额外的努力。

选项4-限制访问驱动器号(卷)。操作简单,但需要Microsoft提供的两个小工具-但在您的情况下可能不起作用

如果您想在没有第3方软件的情况下执行此操作,但是不介意使用Microsoft的两个小工具(如果您尚未使用的话)。我更喜欢这种解决方案,因为它可以“从根本上”解决问题(用户权限与应用程序权限之间的差异),而且相当简单,不需要“大型”第三方软件。

基本上,您添加了无法访问驱动器的用户,然后以那些受限权限启动了程序(您仍将以普通用户身份登录,而不会使用受限帐户登录)。

  • 添加一个用户帐户。

  • 通过使用Windows访问控制文件系统,限制新用户帐户对驱动器的访问。这是一个不错的方法,包括屏幕截图。

  • 然后,以这些权限启动软件。例如,您可以使用PsExec.exe来执行此操作,也可以使用Process Explorer,方法如下。如果还没有,则必须从Microsoft网站下载这两个之一。


4

我提出了一个使用Sandboxie的解决方案 。我没有您的环境,所以我测试了Acrobat.exe在沙箱中运行的情况,沙箱无法访问该沙箱D:。在Acrobat中打开菜单File> Open时,我得到以下信息:

图片

请注意,Acrobat甚至找不到磁盘标签D:,因此被迫以一种me脚的方式显示它,以及当我单击“本地磁盘(D :)”时如何阻止它。

我使用的步骤是:

  • 已安装的沙箱
  • 在“沙箱控件”中,右键单击默认沙箱,然后选择“ 沙箱设置”
  • 打开“ 资源访问”>“文件访问”的分支,然后单击“ 阻止访问”
  • 点击添加程序,然后添加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在沙箱中执行时会遇到一些困难,则可能需要打开其他沙箱限制。

我不知道这是否还会阻止Acrobat用来引起磁盘唤醒的特定Windows API调用,但是可能值得尝试。

我推荐Sandboxie是一款很棒的多功能产品,一个默认的沙箱免费提供。对于多个沙箱,它是付费软件,但终生许可证价格非常合理(我已付款)。例如,我将我测试的产品安装在沙箱中,然后只需单击一下即可将其清除,而无需卸载程序。


另一个隔离解决方案是在Docker容器中使用Adobe Reader 。Docker容器很小,可以像虚拟机一样工作,但是无需创建机器,因为可以从Docker画廊下载现成的容器。

您可以使用 Chocolatey 作为包管理器。

Chocolatey在Adobe Acrobat Reader DC 2018.011.20063上提供了许多可用的Adobe Reader预制包 。

使用Docker,就资源而言可以实现绝对隔离,另一方面,它可以以完全本机的方式共享资源,例如文件夹。


2
@WackGet:有何评论?
harrymc

他说这不起作用,至少在他的用例中,驱动器仍会旋转。我想知道,Sandboxie是否可以让您选择在硬件层隐藏资源?我还没有安装。
Albin

@WackGet:Sandboxie在其配置文件中有更多可用设置。但首先:磁盘是否在启动Adobe时唤醒,或者仅在使用菜单文件>打开时唤醒?
harrymc

除了上述问题,我还使用Docker添加了另一个轻量级的隔离选项。Docker容器很小,可以像虚拟机一样工作,但是无需创建它,因为容器是现成的并且可以从Docker库中下载。
harrymc

有趣的选择。您指的是哪个Docker应用程序,因为它是开发人员/企业解决方案。不幸的是,我看过的docker产品不是免费使用(只能使用试用版软件)...但也许我忽略了……。
阿尔宾'18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.