用VBscript来管控USB口的使用

 

USB的出现除了给大家带来方便外,对企业来说也带来很大的数据安全隐患!用户可以很方便的将数据拷贝到U盘上。可以说USB对企业来说弊大于利。


有很多种方法可以将USB禁用,比如用万能胶水将USB口封住,或者对USB口实施暴力破坏!这就苦了你的PC了。


最好的方法是在BIOS中将USB设备禁用,一了百了。但是也有很多人已经掌握了放电法清除BIOS设置。又使得你的idea被破坏!


那就再来点狠的,将机箱用锁给锁住了。这下可以放心睡大觉了。。。哈哈! PC的小电池没电了,或过期不能用了,又使得你的PC暴露在罪恶的U盘下了。


防不胜防啊!!!


怎么办,怎么办?


我们就来点很暴力的。。。吧!


实时监控U盘的使用,只要有人插入U盘,立刻发邮件给管理员。。。

罚没U盘,再加上行政处分,扣奖金这一招在任何时候都管用。 实时监控软件可以在internet上找到。


没有?!那我们只有定期扫描USB了。。。下面的脚本是用来检查USB有没有在BIOS中被禁用也即检查与USB有关的PnP设备是否存在?


'*********************************************************************************'
'Name:   CheckUSBDeviceByBIOS'
'Purpose:  To check whether the USB device is disabled by BIOS
'Output:   1 :   USB is Enabled in BIOS
'                0:    USB is disabled in BIOS

                -1;   No right to access or other unexpected reason
'********************************************************************************'
Function CheckUSBDeviceByBIOS(ByVal strComputer)
On Error Resume Next
HasUSB=0
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colDevices = objWMIService.ExecQuery _
    ("Select * From Win32_USBControllerDevice")
if err=0 then
    wscript.echo "stating check USB ..."
 For Each objDevice in colDevices
    strDeviceName = objDevice.Dependent
    strQuotes = Chr(34)
    strDeviceName = Replace(strDeviceName, strQuotes, "")
    arrDeviceNames = Split(strDeviceName, "=")
    strDeviceName = arrDeviceNames(1)
    Set colUSBDevices = objWMIService.ExecQuery _
        ("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'")
    For Each objUSBDevice in colUSBDevices
        wscript.echo ucase(objUSBDevice.Description)
        if trim(objUSBDevice.Description)=trim("USB Root Hub") then
            HasUSB=1   'Enabled'
            Exit for
        end if
    Next  
 Next
else
    HasUSB=-1  'No right or not able to connect remotely
end if
CheckUSBDeviceByBIOS=HasUSB
Set objWMIService = Nothing
Set colDevices = Nothing
End function

 


下面的脚本是用来检查注册表中有关USB有关信息的。注册表中如果有HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR,说明此人已经用过USB盘了。 USBStor的出现是在第一次使用U盘后自动建立的,它的键值为3。如果将它禁用,就将此值改为4即可!

如果没有此键值,真是万幸!这台PC上还没有用过U盘,没有键值该如何禁呢?那就将USBHub或USBHUB20的键值改为4,也就将USB给禁用了。

本脚本是用于检查这些键值的。当你有成百上千的PC或服务器时可以大显身手了。

 

'***********************Start of Sub and Functions*************************
'* Function USBCheckByReg
'* Purpose: Check whether the USB is disabled or Enabled in registry.
'* Input:   strComputer        Computer name.
'* Output:  Enabled:  1
'*               Disabled or Not accessable: 0
'*
'********************************************************************
Private Function USBCheckByReg(ByVal strComputer)

    ON ERROR RESUME NEXT
    USBregStr ="Enabled"
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!//" &_
              strComputer & "/root/default:StdRegProv")
 if err=0 then
 
    strKeyPath = "SYSTEM/CurrentControlSet/Services/USBSTOR"
    oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,"Start",strValue

    strKeyPath = "SYSTEM/CurrentControlSet/Services/USBHUB"
    oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,"Start",strValue1

    strKeyPath = "SYSTEM/CurrentControlSet/Services/USBHUB20"
    oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,"Start",strValue2

    if strvalue="4" or strvalue1="4" or strValue2="4" then
       USBCheckByReg=0
       exit function
    else
       USBCheckByReg=1
    end if

 else  'Not accessable

        USBCheckByReg=0
 end if
End Function

你可能感兴趣的:(用VBscript来管控USB口的使用)