为 Hyper-V 增强会话模式启用无损音频

在一个标准的 RDP 会话中,我们可以通过向 .rdp 文件加入 audioqualitymode:i:2 来启用无损音频以在一般网络环境中听到更多爆音。但是 vmconnect 并没有提供这个选项。
那怎么办?不要怂,就是干!

首先我们来反编译一下代码,在 Microsoft.Virtualization.Client.InteractiveSession.ConnectCallback(Microsoft.Virtualization.Client.Management.IVMComputerSystem, bool) 中发现了以下代码:

RdpClient 类是在 Microsoft.Virtualization.Client.RdpClientAxHost.dll 中定义的。
查看发现 RdpClient.AdvancedSettings8 中正好有我们需要的 AudioQualityMode 属性。

接下来就很简单了,直接加上一句

就能达到我们的目的。但是由于反编译代码不一定能直接再次编译,这里选择直接修改 MSIL 字节码。

打开随 Visual Studio 附带的 IL DASM 程序,把 vmconnect.exe 拖进去,选择 File/Dump,使用默认设置反编译出 IL 文件。(注:这一步会在同一目录下生成多个文件)
然后用适当的编辑器打开 vmconnect.il,查找 IMsRdpClientAdvancedSettings7::set_AudioCaptureRedirectionMode,并在下一行加入

然后保存修改,使用 ilasm 回编译,得到可执行文件。

然而我这木耳并没有听出有什么不同,除了爆音变多了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.