USB控制工具
bob 发表于 2010-09-03 20:27 浏览次数:5 views
原理:
1、首先,关闭USB存储设备的盘符自动分配,打开注册表,找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
,将”Start”的值改为4(禁止自动启动),默认为3是自动分配盘符
2、干掉USB存储设备的作用文件:进入WINDOWS系统目录,找到X:\Windows\inf
这里说明一下,USB存储设备的作用文件有两个,分别是usbstor.inf和usbstor.pnf,
因为后续可能需要重新打开USB功能,所以不要删除它,建议拷贝到其他位置,当然你要暴力一点,删除它也没关系,但记得做好备份。
3、然后,禁止将电脑里的资料拷贝到USB存储设备,意思是把USB存储设备设置只读的,打开注册表:定位到
HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control
在其下新建一个名为“StorageDevicePolicies”的项,选中它,在右边的窗格中新建一个名为
“WriteProtect”的DWORD值,并将其数值数据设置为1
演示图:
代码如下:
#include #Include Opt("GUIOnEventMode", 1) ;GUI事件响应模式 $Reg1 = String(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start")) $Reg2 = String(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies","WriteProtect")) GUICreate("USB控制工具", 200, 150) $Label = GUICtrlCreateLabel("密 码:",10,25,50,20) $Input = GUICtrlCreateInput("", 60, 20, 120, 20,0x0020) GUICtrlSetState(-1, $GUI_FOCUS) $Button = GUICtrlCreateButton("确定", 60, 60, 80, 30, 0) GUICtrlCreateLabel("E-Mail:", 24,105, 48, 17) $Label6 = GUICtrlCreateLabel("bob@hy12.com", 71, 105, 79, 17) GUICtrlSetColor(-1,0x0000ff) GUICtrlCreateLabel("Web:", 24, 125, 48, 17) $Label7 = GUICtrlCreateLabel("www.hy12.com", 71, 125, 77, 17) GUICtrlSetColor(-1,0x0000ff) $Radio1 = GUICtrlCreateRadio("关闭U盘设备", 24, 12, 100, 20) GUICtrlSetState(-1, $GUI_HIDE) $Radio2 = GUICtrlCreateRadio("只禁止U盘拷贝", 24, 42, 100, 20) GUICtrlSetState(-1, $GUI_HIDE) $Radio3 = GUICtrlCreateRadio("开启U盘功能", 24, 72, 100, 20) GUICtrlSetState(-1, $GUI_HIDE) Dim $AccelKeys[1][2]=[["{Enter}", $Button]] GUISetAccelerators($AccelKeys) GUISetState(@SW_SHOW) GUICtrlSetOnEvent($Button, "Gui") GUICtrlSetOnEvent($Radio1, "Gui") GUICtrlSetOnEvent($Radio2, "Gui") GUICtrlSetOnEvent($Radio3, "Gui") GUISetOnEvent($GUI_EVENT_CLOSE, "gui") While 1 WEnd Func Gui() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $Button $Pwd = GUICtrlRead($Input) If $Pwd <> "hy12.com" Then MsgBox(16, "密码错误", '请重新输入密码') GUICtrlSetData($Input, "") Else GUICtrlSetState($Label, $GUI_HIDE) GUICtrlSetState($Input, $GUI_HIDE) GUICtrlSetState($Button , $GUI_HIDE) GUICtrlSetState($Radio1 , $GUI_SHOW) GUICtrlSetState($Radio2 , $GUI_SHOW) GUICtrlSetState($Radio3 , $GUI_SHOW) If $Reg1=4 And $Reg2 = 1 Then GUICtrlSetState($Radio1 , $GUI_CHECKED) ElseIf $Reg1=3 And $Reg2 = 1 Then GUICtrlSetState($Radio2, $GUI_CHECKED) Else GUICtrlSetState($Radio3, $GUI_CHECKED) EndIf EndIf Case $radio1 If BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED Then DisableUSB() MsgBox(0,'禁止成功','请重新插入U盘') EndIf Case $radio2 If BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED Then LimitUSB() MsgBox(0,'限制成功','请重新插入U盘') EndIf Case $radio3 If BitAND(GUICtrlRead($radio3), $GUI_CHECKED) = $GUI_CHECKED Then EnableUSB() MsgBox(0,'开启成功','请重新插入U盘') EndIf EndSwitch EndFunc Func DisableUSB() ;关闭USB存储设备的盘符自动分配,默认为3是自动分配盘符,4为禁止自动启动 RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", "REG_DWORD", "4") ;删除USB存储设备文件(做移动即可,以备还原) FileMove(@WindowsDir&"\inf\usbstor.inf", @WindowsDir) FileMove(@WindowsDir&"\inf\usbstor.pnf", @WindowsDir) ;禁止将电脑里的资料拷贝到USB存储设备,即把USB存储设备设置只读 RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies","WriteProtect","REG_DWORD","1") EndFunc Func LimitUSB() RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", "REG_DWORD", "3") FileMove(@WindowsDir&"\usbstor.inf", @WindowsDir&"\inf\") FileMove(@WindowsDir&"\usbstor.pnf", @WindowsDir&"\inf\") RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies","WriteProtect","REG_DWORD","1") EndFunc Func EnableUSB() RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", "REG_DWORD", "3") FileMove(@WindowsDir&"\usbstor.inf", @WindowsDir&"\inf\") FileMove(@WindowsDir&"\usbstor.pnf", @WindowsDir&"\inf\") RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies") EndFunc


