Console.Beep()-声音不会通过RDC重定向



我有一个Windows程序,它使用Win32 Beep(频率、持续时间(函数在发生重要事件时提醒用户。

现在,我的一个用户是远程桌面连接到虚拟机,并在那里运行应用程序。其他声音被正确重定向(例如播放WAV文件(。但是,嘟嘟声不会重定向。我甚至创建了一个简单的测试程序,它所做的只是发出一个音调,毫无疑问,它只有在我的本地机器上运行时才会发出音调。在我远程桌面连接到的任何计算机上运行,并且它以静默方式运行。

如果有办法"打开这个",那就太好了。如果没有,我将提交一个更改请求,更改应用程序以播放wav文件,而不是使用内置的嘟嘟声功能。

如果感兴趣的话,这里是我用来测试(VisualStudio/C#(的超级简单控制台应用程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeepTester
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Press a key to continue and play a short beep...");
Console.ReadKey();
Console.Beep(1500, 300);
Console.WriteLine("All done, Press a key to exit...");
Console.ReadKey();
}
}
}

进一步的调查表明,必须运行一个名为"Beep"的服务,才能通过所选的声音输出将这个过去与硬件相关的特定API调用转换为音调。

出于某种原因,当操作系统安装在虚拟机上时(似乎是默认的?(,嘟嘟声服务被设置为手动启动。当我以管理员身份手动键入"NET START Beep"时,声音会起作用。

可以编辑注册表,使Beep服务在VM中启动时自动运行,然后问题就永久解决了。

最新更新