利用组策略让系统可以使用USB接口但不能使用闪存。
笔者为单位的系统管理员,管理50台左右的电脑,因为电脑多而人手不够,为方便管理,将电脑的软驱、光驱全部拆除,前置USB口的连接线也拆掉,并在BIOS里禁用了USB端口,设置了密码,使USB端口不能使用,虽说在一定程度上控制了科室工作人员使用闪存,但也因为USB口的禁用,而导致不能使用USB鼠标、打印机等设备。
最近有科室要求使用激光打印机及手写板,激光打印机勉强找到了能连接的COM口,而手写板设备只能使用USB接口。我想在禁止使用USB存储器的情况下又不影响USB设备(打印机、手写板)的使用,这该怎么办呢?
一、常用的方法不可行
我首先尝试了以下两个很多人常用的方法,结论是不可行。
1.使用USB控制软件。下载了几个USB控制软件,如myusbonly、USB控制大师等,试用效果却不尽如人意。Myusbonly的控制能力不错,但是却有个缺点,那就是当闪存插上后会出现闪存盘符,大约要延迟几秒的时间盘符才会消失。如果有人在这几秒的时间内拷贝文件或是使用了带病毒的闪存,那么后果也会很严重。
2.隐藏磁盘分区。若能隐藏并禁止访问磁盘分区,那么也可以达到我想要的效果。单位采用的是域管理,客户机使用权限较低的用户登录到域,大部分的操作都受到限制。客户机电脑硬盘共3个分区,C盘跟D盘禁止访问,只有E盘可供操作人员自由使用,此外还有一个网络驱动器P盘,存放需要访问的公共文件。可是在组策略中隐藏磁盘的七个选项都不符合我的要求,达不到只能访问E盘跟P盘的效果(图1)。
存储器而开放其他USB设备"/二、修改组策略文件隐藏驱动器
后来,偶然搜寻到了微软网站的页面“使用组策略对象隐藏指定驱动器”(页面链接: http://support.microsoft.com/kb/231289/zh-cn),文中提到了用修改组策略文件的方法来达到隐藏及禁用磁盘分区的效果,于是立即参照操作。达到目的,方法如下。
1.确定数字与盘符的关系
因为我需要隐藏及禁用的是除了E、P盘之外的磁盘分区,按照文章所述,需要隐藏的驱动器的值设为1,不隐藏的驱动器的值为0,那么数字与盘符的对应关系如下表:
接下来将11111111110111111111101111字符串转换为十进制数字,这个用Windows自带的计算器就可以办到,转换后的十进制数字为:67076079。2.修改system.adm文件
搜索域控制器C盘下的system.adm文件,一下搜出来好几个,且分布在不同的文件夹,大小及修改日期都一样。随便复制了其中1个文件并用记事本打开,查找“Nodrives”及“Noviewdrives”,在ITEMLIST段各增加一行“NAME !!ABCDFGHIJKLMNOQRSTUVWXYZOnly VALUE NUMERIC 67076079” ,如图2。
存储器而开放其他USB设备"/然后继续查找“Stings”,添加一行“ABCDFGHIJKLMNOQRSTUVWXYZOnly="除E、P外其他驱动器"”,如图3。
存储器而开放其他USB设备"/修改后进行保存并覆盖掉原来的文件。
3. 编辑域用户的组策略
重新启动域控制器,打开“Active Directory用户和计算机”编辑域用户的组策略,在“用户配置”→“管理模板”→“Windows资源管理器”的“隐藏我的电脑中这些指定的驱动器”和“防止从我的电脑访问驱动器”的选项中果然就出现了“除E、P外的驱动器”选项,如图4。
选择该项并确定后,找了台客户机,开放其USB口,登录到域后,插入闪存,右下角系统托盘区显示了闪存标志,但是在我的电脑里却显示不出闪存盘符,在地址栏中输入闪存盘符也提示不允许访问,此时使用USB鼠标等设备却没有影响。成功地达到了禁用USB储存器而不影响USB设备的使用。最后,为保险起见,在组策略中禁用了自动播放。