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

Console.Beep() - sound is not redirected through RDC

我有一个 Windows 程序,它使用 Win32 Beep(frequency, duration) 函数在重要事件发生时提醒用户。

现在我的一个用户是远程桌面连接到虚拟机,运行在那里安装应用程序。其他声音被正确重定向(例如播放 WAV 文件)。但是,蜂鸣声不会重定向。我什至创建了一个简单的测试程序,它所做的只是发出一种声音,果然,它只在我的本地机器上 运行 时发出声音。 运行 在我远程桌面连接到的任何计算机上,它 运行 是静默的。

如果有办法"turn this on",那就太好了。如果没有,我将提出更改请求以更改应用程序以播放 wav 文件,而不是使用内置的蜂鸣功能。

如果有兴趣 - 这是我用来测试的超级简单的控制台应用程序 (Visual Studio/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 调用转换为通过声音的音调选择的输出。

出于某种原因,当 OS 安装在 VM 上时(似乎是默认设置?),提示音服务设置为手动启动。当我以管理员身份手动输入 "NET START Beep" 时,声音正常。

可以编辑注册表,使虚拟机启动时自动启动Beep服务运行,问题永久解决。