标题: [分享]禁用&启用USB设备原来如此简单(可按标准分类)
[打印本页]
作者: fastslz
时间: 2008-1-14 23:10
标题: [分享]禁用&启用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 够标准了吧!好了闲话不多,开始分享我的劳动成果;-)
Quote: |
各设备分类标准
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设备就如此简单
相关工具
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 "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
借助DevCon纯脚本备份驱动,兼容驱动精灵(2008-01-17)
[
Last edited by fastslz on 2009-9-13 at 05:19 ]
作者: zh159
时间: 2008-1-15 02:05
Quote: |
devcon.exe disable USB\Class_03
禁用USB鼠标&键盘 |
|
这个在某些地方好用啊^_^
作者: voiL
时间: 2008-1-16 11:34
还是fastslz厉害,这资料我也找好久了,可惜都找不全..
作者: vkill
时间: 2008-1-16 11:51
本本上把 一些设备认为是 U 盘
作者: fastslz
时间: 2008-1-16 12:58
Quote: |
Originally posted by vkill at 2008-1-16 11:51:
本本上把 一些设备认为是 U 盘 |
|
估计某些本本把设备接的主板USB扩展接口上吧
那你再看看SubClass_XX规律,我这里只有USB鼠标也测试不出SubClass_XX,如果USB鼠标键盘都是USB\Class_03那SubClass_XX序号可能不一样的,有的朋友看一下,1楼代码"delims=&"改成"delims="就可以看到了
哎~微软reg query的BUG真够恶心的
作者: HAT
时间: 2008-1-16 13:38
学习代码,更学习精神。
作者: zts59
时间: 2008-1-16 14:11
哇,不错,很全了哇,谢谢
作者: 429499381
时间: 2008-1-16 16:17
在华硕主版上没用, VIMICRO USB PC Camera (ZC0301PLH)
禁用成功, 但是还是能用摄像头
作者: regvip2008
时间: 2008-1-16 17:49
"devcon"这个命令还有如此强大的功能呀?
呵呵,多谢“fastslz”提供!
如此好帖,不得不顶!
作者: enjoyer
时间: 2008-1-16 22:56
标题: 好贴要顶
想系统地学学USB方面的东西,尤其是操作系统对USB设备的管理,
作者: icm
时间: 2008-1-17 14:04
试试吧,顶了!
作者: zts59
时间: 2008-1-24 20:59
请问楼主,DEVCON是修改什么来达到禁用设备的?
为什么用DEVCON禁用设备后:devcon.exe disable USB\Class_08
重启系统,又可以用了,晕
如何不用DEVCON来禁用设备呢? 比如修改注册表之类的.
作者: fastslz
时间: 2008-1-24 22:28
除了DEVCON禁用设备,还有wmic,注册表更复杂(还不一定成功)
当然你可以从注册表中彻底禁用USB设备
关键字 “彻底禁用USB设备” google
作者: rot04021
时间: 2008-1-25 01:17
唔錯唔錯.....xd
作者: student007
时间: 2008-1-25 23:39
谢谢,分享.
学习了
作者: kgdetg1127
时间: 2008-1-26 21:53
学习,顶起。。。。
作者: 313885174
时间: 2008-2-29 17:13
收藏的慢慢看
作者: mez2007
时间: 2008-3-2 11:27
谢谢,真是太高手了,佩服
作者: mez2007
时间: 2008-3-2 11:27
I 服了 YOU
作者: mez2007
时间: 2008-3-2 11:28
你是怎么学的?我怎么就学不会呢?
作者: fastslz
时间: 2008-3-2 12:59
Quote: |
Originally posted by mez2007 at 2008-3-2 11:28:
你是怎么学的?我怎么就学不会呢? |
|
看你对windows底层的东西了解多少,再多看些OEM.inf,和注册表硬件相关的
作者: windowsxphao
时间: 2008-3-2 17:57
好帖,看了后不能不顶
作者: windowsxphao
时间: 2008-3-2 18:17
我试了用devcon禁用摄像头,是禁用了,但从设备管理器中能看到摄像头设备是打叉了,启用摄像头后重启电脑摄像头又能用了,有没可能叫别人在设备管理器中看不到摄像头的方法。
作者: fastslz
时间: 2008-3-2 19:25
Quote: |
Originally posted by windowsxphao at 2008-3-2 18:17:
我试了用devcon禁用摄像头,是禁用了,但从设备管理器中能看到摄像头设备是打叉了,启用摄像头后重启电脑摄像头又能用了,有没可能叫别人在设备管理器中看不到摄像头的方法。 |
|
启用摄像头后重启电脑摄像头又能用了?启用了当然能用呀,如果是禁用了还能用把摄像头开机自启动项删除,位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
看不到X可以策略里把设备管理器禁用了
作者: nanhui112
时间: 2008-3-12 14:45
标题: -----!!!
大虾 我用你那上面的方法 禁用键盘鼠标好像不起作用
我用 devcon disable root\rdp_kbd* 想禁用键盘 但反回来的结果是:
Not all of one device(s) disabled , at least one requires reboot computer to complate the oppration ,是不是说 不止一个设备被停止 而且其中至少有一个需要重启计算机才能完成呢?
这样也不行 devcon disable *pnp0303* 返回来的提示是
Acpi\pnp0303\4&31ad995d&0 : disable failed
No devices disabled.
还有要是我重启拉
那键盘不能输入拉 那我怎么再输入 命令
devcon enable root\kdp_kbd* 去启用键盘设备呢? 直接到硬件那用鼠标启动? 那要是鼠标也禁用拉 那怎么办?
-------本人菜鸟 , 望高手答复,谢谢!
[
Last edited by nanhui112 on 2008-3-12 at 03:06 PM ]
作者: fastslz
时间: 2008-3-12 23:21
devcon.exe disable USB\Class_03这个是禁用USB键盘鼠标
鼠标好用到设备管理器里启用
作者: nanhui112
时间: 2008-3-13 18:17
标题: 哦 ,
那我的键盘和鼠标是不能禁用的拉 ?
那直接 devcon disable usb* 把usb插口 全部挂掉不更好?
作者: dosuser123
时间: 2008-12-11 09:56
学习了。谢谢无私的分享
作者: xmal
时间: 2008-12-11 10:55
谢谢,分享
作者: victor888
时间: 2008-12-11 13:34
禁用的东西,换个USB口重插一下呢?
作者: thispjj
时间: 2009-6-16 04:12
标题: 别人改了的
@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
作者: lijinan
时间: 2010-4-1 13:13
谢谢,不错哦。
作者: guo882633
时间: 2010-4-2 10:40
标题: 这个好点吧
@echo off
start mode con cols=1 lines=1
%1 %2
start /min /i "" "%~nx0" goto min&&goto :eof
:min
for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do devcon remove "@%%i"
exit
作者: moonbeam
时间: 2010-4-8 11:50
不错,学习啦,谢谢。
作者: xxpp
时间: 2010-4-12 12:00
有意思
作者: bida
时间: 2010-6-3 18:09
原来这么简单就能禁用USB设备呀 学习了