使用批处理文件切换默认音频设备


20

我正在尝试在Windows 10上编写一个批处理文件,允许我在运行它时在我的耳机和扬声器之间切换为默认音频设备。我不想使用任何第三方软件。

我试着四处寻找,但我只找到了似乎不起作用的旧脚本,并且还引用了HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\一条似乎不再存在的路径。我在Windows 10注册表中找不到关于此的任何信息,如果我不确定我在做什么,我也不习惯在寄存器上摆弄太多。


1
如果你放弃不想太使用第三方,我已经使用audioswit.ch/er [是的,这是真正的URL]大约5年。热键也可以切换。[没有隶属关系。]
Tetsujin 2016年

Answers:


29

我感谢您不希望使用任何第三方软件,但作为一个选项,如果您不介意使用~100kb exe,您可以使用Nircmd命令:

nircmd setdefaultsounddevice "Speakers" 1

要么

nircmd setdefaultsounddevice "Headphones" 1

您需要确保使用下面列出的音频设备的确切名称Playback Devices(右键单击系统托盘中的声音控件)。将它们重命名Properties为更简单的名称可能更容易,特别是如果名称以任何方式发生冲突。

1在命令的末尾表示“默认设备”。使用2表示“默认通信设备”。


如果你真的不想使用第三方工具,这里是一个注册表项的差异,当我改变我的默认声音设备似乎改变了,它可能对你有用,但我不知道究竟是什么它正在做。它不像1或0那么简单,表明它是否是默认值,看起来如此。

在此输入图像描述


来自我的+1。这是最好的方式。如果你真的不想把nircmd放在硬盘上的某个地方(相信我你想要它,它很棒)那么另一种选择就是将它切换两次并对这里提到的密钥进行reg导出并执行正确的.reg文件。不确定这是否会起作用,但那将是我的替代方法。
LPChip 2016年

谢谢你的回答,我实际上自己偶然发现了nircmd,但是在没有任何第三方软件的情况下找到一种方法是非常好奇的。如果没有其他方法出来,我会考虑使用它。
zerothehero 2016年

+1。尝试了注册表方法,但它并不像建议的那么容易(至少在W10中)。现在使用NirCmd :)
MBaas

6

由于Windows 8(或可能更早?)PC的音频配置存储在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render。在RenderGUID命名的键下面,每个键都包含DeviceStateroot的dword值。但它是如何编码的?

请参阅MSDN上的DEVICE_STATE_XXX常量

  • 1有效
  • 2已禁用
  • 4不存在
  • 8 Unplugged

所以powershell / bat脚本在1和2之间切换应该可以解决问题。

编辑:要获得人类可读的设备名称,请{b3f8fa53-0004-438e-9003-51a46e139bfc},6Properties子项下阅读


嗨Aziz,我在W10下尝试了这个,但它只工作了一次 - 当我试图通过批量切换到以前的设备时,它突然从单击音频托盘图标时获得的列表中消失。另外我发现我需要首先获得该注册表键的权限(请参阅groovypost.com/howto/ ...
MBaas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.