现在想写一个程序,就是能够在任意USB存储设备插入的时候,不对其添加驱动,且在我的电脑里面不显示盘符,但是USB键盘鼠标等其他USB设备不受影响。
其中,USB存储设备包括优盘、移动硬盘、MP3、读卡器带的CF/TF/MMC/SD等。
在网上搜了很多中方法,貌似没啥管用的,所以向各位大师求助,请大师们给与指点现在搜到并试验过的方法有:
1、注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR 下面所有的值都试验的更改过了,当没有插过的u盘插上一加载驱动就又能显示盘符了
2、删除USB驱动,其他USB设备无法工作
3、改BIOS,其他USB设备无法工作以上三种都是没有效果的。

解决方案 »

  1.   

    http://support.microsoft.com/kb/823732/zh-cn
      

  2.   

    usb只是一种硬件接口,如果usb这个硬件没有实现区分功能,是不可能的。
    如果usb这个硬件实现区分功能,如果内核中usb驱动程序没有实现,照样不可能。更不要说api层。1、注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR 下面所有的值都试验的更改过了,当没有插过的u盘插上一加载驱动就又能显示盘符了、//这只是api层以上的事 
    2、删除USB驱动,其他USB设备无法工作 //这是内核中usb驱动程序层的事
    3、改BIOS,其他USB设备无法工作 //这是硬件中断层的事
      

  3.   

    如果计算机上尚未安装 USB 存储设备,请向用户或组分配对下列文件的“拒绝”权限:
    %SystemRoot%\Inf\Usbstor.pnf
    %SystemRoot%\Inf\Usbstor.inf
    这样,用户将无法在计算机上安装 USB 存储设备。 要向用户或组分配对 Usbstor.pnf 和 Usbstor.inf 文件的“拒绝”权限,请按照下列步骤操作:
    启动 Windows 资源管理器,然后找到 %SystemRoot%\Inf 文件夹。
    右键单击“Usbstor.pnf”文件,然后单击“属性”。
    单击“安全”选项卡。
    在“组或用户名称”列表中,单击要为其设置“拒绝”权限的用户或组。
    在“UserName or GroupName 的权限”列表中,单击以选中“完全控制”旁边的“拒绝”复选框,然后单击“确定”。
    注意:此外,还需将系统帐户添加到“拒绝”列表中。
    右键单击“Usbstor.inf”文件,然后单击“属性”。
    单击“安全”选项卡。
    在“组或用户名称”列表中,单击要为其设置“拒绝”权限的用户或组。
    在“UserName or GroupName 的权限”列表中,单击以选中“完全控制”旁边的“拒绝”复选框,然后单击“确定”。
      

  4.   

    可以将 USB Mass Storage Device --> Disable 。
      

  5.   

    USB Mass Storage Device这个驱动去掉
      

  6.   


    今天试了试,前面修改权限的usbstor.inf与usbstor.pnf貌似真的没有"安全"这一项
    ps:我用的是安装版的xp,不是被阉割过的克隆版
    后面的修改注册表一旦用控制面板对u盘再加载驱动,那个start项就被修改回来了
      

  7.   

    只要你的分区是NTFS的,就会有安全选项卡打开“我的电脑”->点击菜单项“工具”->“文件夹选项”->点击“查看”选项卡
    在下面的高级设置中,找到“使用简单文件共享 (推荐)”,确定该项没有打钩
    点击“确定”即可。
      

  8.   


    貌似我是NTFS,但是属性里面确实没有安全那一项,而且简单文件共享也一直都有对勾,查看高级里面有“系统所属文件夹,已经禁用了其他属性选项”
      

  9.   

    晕,现在去掉对勾鸟
    不过,如何用程序实现设置usbstor.pnf与inf的权限呢?用什么函数呢?
    写注册表也碰到问题了,我定义DWORD型的变量,值赋给3与4,但是写4的时候都没有问题,写3的时候总是变成不正确的DWORD值,查看二进制,
    4的时候是       0000 04 00 00 00
    但是
    3的时候就变成了 0000 03 00 00

    不知道为什么
      

  10.   

    这个有简单的实现方法,程序定时枚举设备列表,并禁用usbstor,用setupapi实现,
      

  11.   

    是用SetupDiEnumDeviceInfo吗?
    我用的ClassUID是36FC9E60-C465-11CF-8056-444553540000,是USB的,结果把USB设备全干掉鸟
    具体的USB存储器UID是是啥啊?疯狂的迷惑中。。
      

  12.   

    这样太耗权限了。http://www.lihuasoft.net/article/show.php?id=755
      

  13.   

    SetupDiEnumDeviceInfo
    不止是有ClassUID一种方式啊!
    加个判断Service=USBSTOR