技术分享 USB声卡/耳机随机不是默认设备 [复制链接]

RECKY
三国LV12
技术中心 13256 0 2022-6-16 23:25:32
本帖最后由 RECKY 于 2023-12-28 13:25 编辑

问题环境:
       易乐游2.3.7.0

问题现象:
      客户机USB声卡/耳机随机不是默认设备。
       1.png

问题解决:
       这种情况优先使用:
传送门   的教程,设置下。设置后发现没有效果,自动获取的USB设备只有一个,导致批处理自动结束,这里为修改过程。可以直接跳到文章底部拿文件↓↓↓
       原批处理:

      
  1. @echo off
  2. ::读取USB声卡设备信息保存到usb.txt文件
  3. devcon64 find usb\class_01 >usb.txt

  4. ::判断USB声卡数量
  5. for /f "tokens=2 delims=:" %%a in ('find /c /v "" usb.txt')do set/a result=%%a+0
  6. ::echo %result%

  7. ::USB声卡数量为1,则直接退出,不做任何操作
  8. if %result% ==2 (exit)

  9. ::USB声卡数量>1,禁用所有的盒子声卡
  10. devcon64 disable "USB\VID_0D8C&PID_013C"
  11. devcon64 disable "USB\VID_0D8C&PID_000A"

  12. ::禁用再启动,避免出现USB声卡XX
  13. :1
  14. ::devcon64 disable usb\class_01
  15. ::ping 127.0.0.1 -n 2 >nul
  16. ::devcon64 enable usb\class_01
复制代码

           测试运行批处理:
           

  1. devcon64 find usb\class_01 >usb.txt
复制代码


            打开usb.txt中只获取到一条记录

            4.png
           只有一条记录,USB声卡数量为1,则直接退出,不做任何操作。导致设置不生效。

           因为要将USB声卡设置为默认则需要将批处理修改下:


  1. @echo on
  2. ::读取USB声卡设备信息保存到usb.txt文件
  3. ::devcon64 find usb\class_01 >usb.txt

  4. ::判断USB声卡数量
  5. for /f "tokens=2 delims=:" %%a in ('find /c /v "" usb.txt')do set/a result=%%a+0
  6. ::echo %result%

  7. ::USB声卡数量为1,则直接退出,不做任何操作
  8. if %result% ==2 (exit)

  9. ::USB声卡数量>1,禁用所有的盒子声卡
  10. devcon64 disable "USB\VID_2B0D&PID_0031&MI_00\6&318F3969&0&0000"
  11. devcon64 disable "USB\VID_2B0D&PID_0031&MI_00"
  12. devcon64 disable "USB\VID_2B0D&PID_0031&REV_0100&MI_00"
  13. devcon64 disable "USB\VID_2B0D&PID_0031&MI_00"
  14. devcon64 disable "USB\Class_01&SubClass_01&Prot_00"
  15. devcon64 disable "USB\Class_01&SubClass_01"
  16. devcon64 disable "USB\Class_01"
  17. devcon64 disable "USB\VID_0955&PID_9000"
  18. devcon64 disable "HDAUDIO\FUNC_01"
  19. devcon64 disable "HDAUDIO\FUNC_01&VEN_10DE&DEV_009E&SUBSYS_1458404D&REV_1001"
  20. devcon64 disable "HDAUDIO\FUNC_01&VEN_10DE&DEV_009E&SUBSYS_1458404D"
  21. ::禁用再启动,避免出现USB声卡XX
  22. :1
  23. devcon64 disable usb\class_01
  24. ping 127.0.0.1 -n 2 >nul
  25. devcon64 enable usb\class_01
  26. ::ping 127.0.0.1
  27. ::pause
复制代码


             修改内容:
             一、将devcon64 find usb\class_01 >usb.txt改为::devcon64 find usb\class_01 >usb.txt 不执行自动获取。【客户机上可以运行一次后再修改,以便获取默认USB硬件ID信息】
            二、将在::USB声卡数量>1,禁用所有的盒子声卡下方将所有的声卡硬件ID都添加进去【设备管理器-声音、视频和游戏控制器-选择声卡-右击-属性-详细信息-属性:硬件ID-值-右击复制(有多个ID都要复制粘贴)】
            三、在usb.txt 中将第二部的硬件ID都粘贴进去(如下图)

             6.png
            四、将禁用再启动,避免出现USB声卡XX下方的代码修改

  1. ::devcon64 disable usb\class_01
  2. ::ping 127.0.0.1 -n 2 >nul
  3. ::devcon64 enable usb\class_01
复制代码

           修改为:


  1. devcon64 disable usb\class_01
  2. ping 127.0.0.1 -n 2 >nul
  3. devcon64 enable usb\class_01
复制代码


          去除前方的::

          最终效果:
          5.png
          批处理流程简单说明下,获取usb.txt的数量【其实这步可有可无,可删除】,禁用硬件ID对应的声卡,只启用USB声卡。




          7.png
          使用方法:将引号中声卡的硬件ID修改为客户机声卡的实际ID后(如上图区域),服务端开机启动项-将start.vbs设置启动程序。   USB PNP 、声卡PNP 都开启。

          已修改USB声卡设置默认:
上传的附件: USB声卡自动判断.rar (24.5 KB, 下载次数: 349)
          若不生效是硬件ID不同,记事本打开hub.bat文件替换修改硬件ID,批处理内有说明。



您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29041 个
  • 话题数: 9629 篇
  • 巅峰数: 5500 人