使用VBS禁用、启动USB存储设备

USB存储设备控制 By Yu2n

XP系统测试通过,需要管理员权限。

在下次插拔设备时生效,无须重启。

'USB_Stock_Block.vbs
'===========================================================================================
CheckOS     ' 检查操作系统版本
CheckMeState  ' 检查程序运行状态
main      ' 执行主程序

'===========================================================================================
'主函数
Sub main()
    Dim wso, windir, EnableUSB
    Set wso = CreateObject("WScript.Shell")
    Set objNetwork = CreateObject("wscript.network")
        strComputer = objNetwork.ComputerName

    If wso.Popup(VbCrLf & "禁用 USB 存储设备,请按“确定”"& VbCrLf & _
                VbCrLf & "启用 USB 存储设备,请按“取消”   (6秒后自动取消)" _
                , 6, "USB 存储设备控制 - 主菜单", 48+4096+1) = 1 Then
        EnableUSB = 0
    Else
        EnableUSB = 1
    End If

    If Exist( "C:\windows\system32\cmd.exe" ) Then windir = "windows"
    If Exist( "C:\winnt\system32\cmd.exe" ) Then windir = "winnt"

    If EnableUSB = 1 Then
        wso.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入
        wso.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","3","REG_DWORD"           '启用USBStor

        Move "C:\" & windir & "\inf\usbstor.pnf_" , "C:\" & windir & "\inf\usbstor.pnf"
        Move "C:\" & windir & "\inf\usbstor.inf_" , "C:\" & windir & "\inf\usbstor.inf"
        Move "C:\" & windir & "\system32\drivers\usbstor.sys_" , "C:\" & windir & "\system32\drivers\usbstor.sys"

        If (Not Exist( "C:\" & windir & "\inf\usbstor.pnf_" )) And (regKeyRead( "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start" ) = 3 ) Then
            wso.Popup VbCrLf & "启用 USB 存储设备成功。    ", 5, "USB 存储设备控制 - 操作完成", 64+4096
        Else
            wso.Popup VbCrLf & "启用 USB 存储设备失败。    ", 5, "USB 存储设备控制 - 操作完成", 16+4096
        End If
    Else
        wso.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入
        wso.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","4","REG_DWORD"           '禁用用USBStor

        Move "C:\" & windir & "\inf\usbstor.pnf" , "C:\" & windir & "\inf\usbstor.pnf_"
        Move "C:\" & windir & "\inf\usbstor.inf" , "C:\" & windir & "\inf\usbstor.inf_"
        Move "C:\" & windir & "\system32\drivers\usbstor.sys" , "C:\" & windir & "\system32\drivers\usbstor.sys_"

        If (Not Exist( "C:\" & windir & "\inf\usbstor.pnf" )) And (regKeyRead( "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start" ) = 4 ) Then
            wso.Popup VbCrLf & "禁用 USB 存储设备成功。    ", 5, "USB 存储设备控制 - 操作完成", 64+4096
        Else
            wso.Popup VbCrLf & "禁用 USB 存储设备失败。    ", 5, "USB 存储设备控制 - 操作完成", 16+4096
        End If
    End if

    Set wso = Nothing
End Sub

'===========================================================================================
'小函数
Function Exist( strPath )
    'On Error Resume Next
    Set fso = CreateObject("Scripting.FileSystemObject")
    If ((fso.FolderExists( strPath )) Or (fso.FileExists( strPath ))) then
        Exist = True
    Else
        Exist = False
    End if
    Set fso = Nothing
End Function
Sub Move( strSource, strDestination )
    On Error Resume Next
    If Exist( strSource ) Then
        Set fso = CreateObject("Scripting.FileSystemObject")
        If (fso.FileExists(strSource)) Then fso.MoveFile strSource, strDestination
        If (fso.FolderExists(strSource)) Then fso.MoveFolder strSource, strDestination
        Set fso = Nothing
    Else
        WarningInfo "警告", "找不到 " & strSource & " 文件!", 2
    End If
    If Not Exist( strDestination ) Then WarningInfo "警告", "移动失败,无法移动 " & VbCrLf & strSource & " 至" & VbCrLf & strDestination, 2
End Sub
Function regKeyRead( strKey )
    Set wso = CreateObject("WScript.Shell")
    regKeyRead = wso.RegRead( strKey )  'strKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\DocTip"
    Set wso = Nothing
End Function

'===========================================================================================
'是否重复运行
Sub CheckMeState()
    If IsRun( WScript.ScriptFullName ) Then
        Set wso = CreateObject("WScript.Shell")
        If wso.Popup("程序已运行,请不要重复运行本程序!" & VbCrLf & VbCrLf & _
                            "退出已运行程序,请按“确定”,否则请按“取消”。(3秒后自动取消)" _
                            , 3, "警告", 1) = 1 Then
            KillMeAllRun
        End If
        Set wso = Nothing
        'WarningInfo "警告:", "程序已运行,请不要重复运行本程序!!", 1
        WScript.Quit
    End If
End Sub
' 检测是否重复运行
Function IsRun(appPath)
    IsRun=False
    For Each ps in GetObject("winmgmts:\\.\root\cimv2:win32_process").instances_
        'IF Lcase(ps.name)="mshta.exe" Then
        IF Lcase(ps.name)="wscript.exe" Then
            IF instr(Lcase(ps.CommandLine),Lcase(appPath)) Then i=i+1
        End IF
    next
    if i>1 then
        IsRun=True
    end if
End Function
'终止自身
Function KillMeAllRun()
    Dim MeAllPid
    Set pid = Getobject("winmgmts:\\.").InstancesOf("Win32_Process")
    For Each ps In pid
        'if LCase(ps.name) = LCase("mshta.exe") then
        IF Lcase(ps.name)="wscript.exe" Or Lcase(ps.name)="cscript.exe"Then
            IF instr(Lcase(ps.CommandLine),Lcase(WScript.ScriptFullName)) Then MeAllPid = MeAllPid & "/PID " & ps.ProcessID & " "
        end if
    next
    Set wso = CreateObject("WScript.Shell")
    wso.Run "TASKKILL " & MeAllPid & " /F /T", 0, False
    Set wso = Nothing
    Set pid = Nothing
End Function

'===========================================================================================
'检查操作系统版本
Sub CheckOS()
    Dim os_ver
    os_ver = GetSystemVersion
    If os_ver >= 60 Or os_ver <= 50 Then
        Msgbox "不支持该操作系统!    ", 48+4096, "警告"
        WScript.Quit  ' 退出程序
    End If
End Sub
'取得操作系统版本
Function GetSystemVersion()
    Dim os_obj, os_version, os_version_arr
    Set os_obj = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    For Each os_info In os_obj
        os_version = os_info.Version
        If os_version <> "" Then Exit For
    Next
    Set os_obj = Nothing
    os_version_arr = Split( os_info.Version, ".")
    GetSystemVersion = Cint( os_version_arr( 0 ) & os_version_arr( 1 ) )
End Function
(0)

相关推荐

  • VB实现禁用任务管理器的方法

    在Windows XP下禁用Ctrl-Alt-Delete的方法比较简单,因为Ctrl-Alt-Delete组合键的功能就是调用任务管理器,直接把任务管理器给禁用了,Ctrl-Alt-Delete的功能也就没有了,相当于也给禁用了.这个方法的简单的实现是用二进制 stream 形式先打开 C:\windows\system32\taskmgr.exe任务管理器程序,使后续无法手工正常打开任务管理器.代码如下: 复制代码 代码如下: Open "C:\WINDOWS\system32\taskmg

  • vbscript禁用 启用fso的方法

    scrrun.dll scrrun - scrrun.dll - DLL文件信息 DLL 文件: scrrun 或者 scrrun.dll DLL 名称: Microsoft Script Runtime 描述:  scrrun.dll用于阅读和编写脚本和文本文件. 属于: Microsoft Script Runtime  系统 DLL文件: 是 常见错误: File Not Found, Missing File, Exception Errors PS:个人觉得站长看这个很好,禁用你的FS

  • 使用 iisext.vbs 禁用 Web 服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储于 systemroot\system32 中),通过禁用所有具有特定 Web 服务扩展 ID 的文件来禁用 Web 服务扩展.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地或远程计算机上执行. Iisext.vbs 执行可用于 IIS 管理器的

  • 用vbs实现本地连接禁用/启用脚本代码

    转载至 http://community.csdn.net/Expert/topic/4881/4881882.xml 复制代码 代码如下: Const ssfCONTROLS = 3 sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等 sEnableVerb = "启用(&A)"  sDisableVerb = "禁用(&B)"   'XP系统中应为 &quo

  • 用vbs实现禁用服务

    问: 您好,脚本专家!如何禁用服务? -- DS 答: 您好,DS.您知道吗,脚本专家似乎无意中发现了一个好主意.在上期专栏中,我们向大家介绍了如何禁用 LMHosts 文件.今天,我们将向大家介绍如何禁用服务.如果我们这样继续下去的话,不久,我们便可将如何禁用计算机上的一切介绍给大家.请想象一下:不再有网络问题,不再有客户服务中心呼叫,不再有用户覆盖了不应覆盖的文件.我们所要做的就是禁用一切,从而所有这些问题都将消失!这可以是我们通往幸福时光的入场券. 不可否认,禁用计算机上的一切可能导致贵组

  • bat生成vbs通过注册表禁用或启用USB端口的代码

    当然,你也可以完全使用BAT操作注册表来完成修改注册表的键值的目的,具体方式留以后完善,如果你有好的想法,记得告诉我哦! USB_Disable.bat文件代码: 复制代码 代码如下: @echo off echo On Error Resume next>USB_Disable.vbs echo Dim WshShell>>USB_Disable.vbs echo Set WshShell = WScript.CreateObject("WScript.Shell"

  • 使用VBS禁用、启动USB存储设备

    USB存储设备控制 By Yu2n XP系统测试通过,需要管理员权限. 在下次插拔设备时生效,无须重启. 'USB_Stock_Block.vbs '=========================================================================================== CheckOS ' 检查操作系统版本 CheckMeState ' 检查程序运行状态 main ' 执行主程序 '==========================

  • Android获得所有存储设备位置的最佳方法

    本方式可以获得内部存储设备地址.SD卡地址.USB设备地址,兼容性能达到99%(别问我为什么这么保证,因为是借鉴了Android设置->存储页面的源码). 由于调用了几个被@hide的方法,所以采用了反射. 具体代码如下: public static List<HomeDirBean> getAllExternalStorage(Context context) { List<HomeDirBean> storagePath = new ArrayList<>()

  • Android 7.0开发获取存储设备信息的方法

    本文实例讲述了 Android 7.0开发获取存储设备信息的方法.分享给大家供大家参考,具体如下: Android 7.0开发相较之前有不少改进,具体可参考前面的文章Android7.0版本影响开发的改进分析,这里简单总结一下Android 7.0针对存储设备的简单操作方法. MountPoint 我们通过MountPoint来描述android设备信息 private static class MountPoint { String mDescription; String mPath; bo

  • 使用 iisweb.vbs start 启动网站的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 IIS 在创建网站时自动将其启动,除非管理员用 /dontstart 参数明确禁止它.管理员可能会禁止自动启动,例如,留出一定的时间使站点添加到 DNS. 管理员还可能为了排除故障而暂停或停止网站.在类似情况下,可使用命令行脚本 iisweb.vbs(存储在 systemroot\System32 中)启动或重新启动网站. 重要事项  只有

  • VBS备忘录启动代码

    复制代码 代码如下: msg = Array("解除电话 #57#", "服务器处理", "流量图看有没有大流量", "今天要完成哪些任务")    'msgbox join(msg,vbcrlf)    For i = 0 To UBound(msg)        MsgBox msg(i)    Next

  • Android中查看USB连接的外接设备信息的代码实例

    1,USB存储设备(如:U盘,移动硬盘): //USB存储设备 插拔监听与 SD卡插拔监听一致. 复制代码 代码如下: private USBBroadCastReceiver mBroadcastReceiver; IntentFilter iFilter = new IntentFilter();       iFilter.addAction(Intent.ACTION_MEDIA_EJECT);       iFilter.addAction(Intent.ACTION_MEDIA_MO

  • DUSE让DOS支持USB驱动器

    不知有多少人以为DOS不支持USB设备.因为USB设备标准是在Windows 95之后才制定的,而当时DOS的老东家微软早已决定放弃继续发展其MS-DOS了.这样一来,当您想在DOS下操作USB设备的时候,往往只能望洋兴叹了.即使您使用的系统是Windows,当Windows崩溃要备份或恢复数据时,平时使用的USB硬盘等USB设备也都成了摆设.     幸好微软并不能决定一切,Pocketec公司开发的DUSE就为我们提供了在DOS下对USB存储设备(USB硬盘.软驱.光驱)的支持,不过它目前还

  • DOS下硬件设备的使用与设置

    由于电脑的普及和应用的日益深入,为了满足人们的需要,电脑的功能随着它的发展变得越来越强大,硬件设备也越来越多,如从原来的ISA及PCI声卡.调制解调器等到现在的USB硬盘.鼠标等,而且品牌多种多样.那么,我们应该如何在DOS下使用与设置这些设备呢? 其实有很多硬件设备在DOS下不需安装任何的驱动程序,只要硬件或将BIOS设置好就可使用,如键盘,普通的硬盘和支持PCL(打印机控制语言)的打印机 等.在DOS下使用支持PCL的打印机非常容易,因为打印机连接在并行端口(LPT)上,所以通常LPT1或P

  • 小软件锁住系统的USB端口

    我的电脑保存有大量个人隐私文件,为防止文件外泄,电脑密码.网络防火墙我都已做好安全防护准备,惟有USB端口还不放心,能否让我电脑上的USB只为我开?这样就可以做到万无一失了. 我的电脑保存有大量个人隐私文件,为防止文件外泄,电脑密码.网络防火墙我都已做好安全防护准备,惟有USB端口还不放心,能否让我电脑上的USB只为我开?这样就可以做到万无一失了. 最后USB安全存储专家终于实现了我这一愿望. 软件名称:USB安全存储专家(USSE) 软件版本:2005(Build 105) 软件大小:1871

随机推荐