[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统增强] 批处理禁用、启用USB设备如此简单(可按标准分类)

之前大家都用devcon find获取硬件ID(Hardware ID)通过for+find筛选来禁用或启用设备,但其名称不固定也没规律所以任何代码都不具有相对的通用性,我也一直以来因USB设备标准所困惑,本着不达目的誓不罢休的精神,开始寻求USB设备在Windows中的规律及USB设备标准,打开注册表编辑器开始从硬件相关的键值入手以寻找它们的相似之处及规律,最后定位到HKLM\SYSTEM\CurrentControlSet\Enum\USB,一一对比发现USB\Class_XX&SubClass_XX其有一定的规律,于是请出google高手相助,关键词CompatibleIDs在微软网站看到一点相关标准(微软标准并不是全部的标准),呵呵看来有希望了^_^,继续关键词USB Class,哈哈OK了!!www.usb.org 够标准了吧!好了闲话不多,开始分享我的劳动成果;-)

各设备分类标准
00 Use class information in the Interface Descriptors
01 Audio
02 Communications and CDC Control
03 HID (Human Interface Device)
05 Physical
06 Image
07 Printer
08 Mass Storage
09 Hub
0A CDC-Data
0B Smart Card
0D Content Security
0E Video
0F Personal Healthcare
DC Diagnostic Device
E0 Wireless Controller
EF Miscellaneous
FE Application Specific
FF Vendor Specific

英文不好以上不作翻译了

禁用某设备方法devcon.exe disable USB\Class_XX
启用某设备方法devcon.exe enable USB\Class_XX
(其中XX就是上面绿色部分序号)

例:
devcon.exe disable  USB\Class_08
禁用U盘,即删除U盘,不管你有N个U盘统统一起删除
devcon.exe disable  USB\Class_06
禁用数码相机,包括数码相机附带的可移动磁盘
devcon.exe disable  USB\Class_03
禁用USB鼠标&键盘
devcon.exe disable  USB\Class_ff
禁用摄像头,看你还臭美;-)
禁用&启用USB设备就如此简单 :cool:

相关工具 DevCon.exe 微软命令行实用工具可替代设备管理器
相关连接:
http://www.microsoft.com/whdc/device/input/HID_HWID.mspx
http://www.usb.org/developers/defined_class/
http://www.cn-dos.net/forum/viewthread.php?tid=35139&fpage=1

最后也希望大家一起收集其他 USB\Class_XX 序号(跟贴)
查询已知或曾安装过的设备USB\Class_XX 序号批处理代码见下
  1. @echo off
  2. for /f "delims=*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Enum\USB"^|find /i "Vid_"') do (
  3.     for /f "delims=*" %%b in ('reg query "%%a"^|find /i "Vid_"') do (
  4.         for /f "tokens=3" %%c in ('reg query "%%b"^|find /i "CompatibleIDs"') do (
  5.             for /f "tokens=1,* delims=REG_SZ " %%d in ('reg query "%%b"^|find /i "DeviceDesc"') do (
  6.                 for /f "delims=&" %%i in ('echo."%%c"^|find /i "Class"') do echo "%%~i"   设备名称:%%e
  7. ))))
  8. echo.&echo 若要查询USB\Class_XX以下分类,请将第5个for的"delims=&"改成"delims="
  9. pause
复制代码
3

评分人数

不过有些不明白 fastslz  
在 "查询已知或曾安装过的设备USB\Class_XX 序号批处理代码" 中
为什么 要用那么多的 find /i
reg query本身就支持键值查询...
修改一点点的代码,效率有所提升:
  1. @echo off
  2. set Reg_Path=HKLM\SYSTEM\CurrentControlSet\Enum\USB
  3. for /f "delims=*" %%a in ('reg query "%Reg_Path%"^|find /i "Vid_"') do (
  4.     for /f "skip=4 delims=" %%b in ('reg query "%%a"') do (
  5.       for /f "skip=4 tokens=3" %%i in ('reg query "%%b" /v CompatibleIDs') do (
  6.           for /f "skip=4 tokens=1,2,*" %%a in ('reg query "%%b" /v DeviceDesc') do (
  7.              for /f "delims=&" %%j in ("%%i") do (
  8.                    echo %%j   设备名称:%%c
  9.              )
  10.           )
  11.        )
  12.    )
  13. )
  14. echo.&echo 若要查询USB\Class_XX以下分类,请将第5个for的"delims=&"改成"delims="
  15. pause
复制代码

TOP

是的这样代码执行效率高了很多,我写代码不太讲究这些,达到目的就行,find呢主要是因为我在纯dos下已经用惯了,还有要过滤Unknown Device。

TOP

谢谢~又多学了一个.

TOP

高手啊  学习了1!!

TOP

学习了,收藏该代码。

TOP

修改mac地址的工具还可以禁用usb 学了

TOP

LS,什么修改mac?

TOP

我试了一下,发现只有u盘插入的情况才有用,换一个u盘也没有,有没有办法运行一下以后,所有的u盘再也不能用了,就是彻底禁用u盘的办法,谢谢

TOP

原帖由 li_dongyun 于 2009-4-27 11:15 发表
我试了一下,发现只有u盘插入的情况才有用,换一个u盘也没有,有没有办法运行一下以后,所有的u盘再也不能用了,就是彻底禁用u盘的办法,谢谢
  1. @echo off
  2. rem 彻底禁用U盘
  3. reg add "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /f /v "Start" /t REG_DWORD /d 4
复制代码
  1. @echo off
  2. rem 启用U盘
  3. reg add "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /f /v "Start" /t REG_DWORD /d 3
复制代码

TOP

原帖由 fastslz 于 2009-4-30 22:05 发表


@echo off
rem 彻底禁用U盘
reg add "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /f /v "Start" /t REG_DWORD /d 4


@echo off
rem 启用U盘
reg add "HKLM\SYSTEM\CurrentControlSet\Services\ ...

这个方法只对用过的u盘有用,没用过的不起作用,微软官方有解释

TOP

回复 12楼 的帖子

要是你的系统里没有 devcon.exe 文件, 就去下载一下
http://support.microsoft.com/kb/311272/zh-cn

TOP

这下批量拷贝SD卡方便了,不用手工删除设备。 很久以前就看到这个帖子,
还好记得是Fastslz发的,直接找到了哈哈。顶起来

TOP

求助,可以禁用某个移动硬盘而不是全部吗?

TOP

返回列表