标题: [系统增强] 批处理禁用、启用USB设备如此简单(可按标准分类) [打印本页]
作者: fastslz 时间: 2008-1-16 14:25 标题: 批处理禁用、启用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 序号批处理代码见下- @echo off
- for /f "delims=*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Enum\USB"^|find /i "Vid_"') do (
- for /f "delims=*" %%b in ('reg query "%%a"^|find /i "Vid_"') do (
- for /f "tokens=3" %%c in ('reg query "%%b"^|find /i "CompatibleIDs"') do (
- for /f "tokens=1,* delims=REG_SZ " %%d in ('reg query "%%b"^|find /i "DeviceDesc"') do (
- for /f "delims=&" %%i in ('echo."%%c"^|find /i "Class"') do echo "%%~i" 设备名称:%%e
- ))))
- echo.&echo 若要查询USB\Class_XX以下分类,请将第5个for的"delims=&"改成"delims="
- pause
复制代码
作者: youxi01 时间: 2008-1-16 17:27
不过有些不明白 fastslz
在 "查询已知或曾安装过的设备USB\Class_XX 序号批处理代码" 中
为什么 要用那么多的 find /i
reg query本身就支持键值查询...
修改一点点的代码,效率有所提升:- @echo off
- set Reg_Path=HKLM\SYSTEM\CurrentControlSet\Enum\USB
- for /f "delims=*" %%a in ('reg query "%Reg_Path%"^|find /i "Vid_"') do (
- for /f "skip=4 delims=" %%b in ('reg query "%%a"') do (
- for /f "skip=4 tokens=3" %%i in ('reg query "%%b" /v CompatibleIDs') do (
- for /f "skip=4 tokens=1,2,*" %%a in ('reg query "%%b" /v DeviceDesc') do (
- for /f "delims=&" %%j in ("%%i") do (
- echo %%j 设备名称:%%c
- )
- )
- )
- )
- )
- echo.&echo 若要查询USB\Class_XX以下分类,请将第5个for的"delims=&"改成"delims="
- pause
复制代码
作者: fastslz 时间: 2008-1-16 19:45
是的这样代码执行效率高了很多,我写代码不太讲究这些,达到目的就行,find呢主要是因为我在纯dos下已经用惯了,还有要过滤Unknown Device。
作者: 小萧 时间: 2008-1-17 09:56
谢谢~又多学了一个.
作者: lanlinlan 时间: 2008-1-18 15:04
高手啊 学习了1!!
作者: cd309420 时间: 2008-12-8 11:15
学习了,收藏该代码。
作者: 小勇12 时间: 2008-12-19 15:17
修改mac地址的工具还可以禁用usb 学了
作者: anyhow 时间: 2008-12-19 15:43
LS,什么修改mac?
作者: li_dongyun 时间: 2009-4-27 11:15
我试了一下,发现只有u盘插入的情况才有用,换一个u盘也没有,有没有办法运行一下以后,所有的u盘再也不能用了,就是彻底禁用u盘的办法,谢谢
作者: fastslz 时间: 2009-4-30 22:05
原帖由 li_dongyun 于 2009-4-27 11:15 发表
我试了一下,发现只有u盘插入的情况才有用,换一个u盘也没有,有没有办法运行一下以后,所有的u盘再也不能用了,就是彻底禁用u盘的办法,谢谢
-
- @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\USBSTOR" /f /v "Start" /t REG_DWORD /d 3
复制代码
作者: li_dongyun 时间: 2009-5-6 14:52
原帖由 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盘有用,没用过的不起作用,微软官方有解释
作者: neorobin 时间: 2010-1-31 12:24 标题: 回复 12楼 的帖子
要是你的系统里没有 devcon.exe 文件, 就去下载一下
http://support.microsoft.com/kb/311272/zh-cn
作者: 523066680 时间: 2010-10-24 08:39
这下批量拷贝SD卡方便了,不用手工删除设备。 很久以前就看到这个帖子,
还好记得是Fastslz发的,直接找到了哈哈。顶起来
作者: 523066680 时间: 2010-10-26 18:55
求助,可以禁用某个移动硬盘而不是全部吗?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |