标题并没有吓跑你。伟大的!
这就是我想要做的:
我有一项服务会在某个时间点播放非常重要的声音。因为它非常重要,所以我确保混音器被静音,并且音量在启动时处于适当的水平。
当我启动本地登录到它正在执行的计算机的服务时,这工作正常。
但是,当我从远程桌面 session 启动服务时,如果我在登录时选择“在此计算机上播放”,则无法获得音量控制。
显而易见的解决方案是“登录时选择'在远程计算机上播放'”,但由于各种可用性原因,这不可行。
所以; M$ 问题是:“如果在登录时选择了‘在这台计算机上播放’,从远程桌面 session 启动的服务如何设置本地混音器主音量?”
该服务在 WinXP 上运行,我使用来自 C++ 的可怕的 Mixer* API。
谢谢,
里卡德
最佳答案
问题是,作为操作系统服务,您无法控制 TS 用户的音量,除非您有代码在 TS 用户的 session 中运行。为了将音频从服务器远程传输到客户端,TS 服务虚拟化了所有音频 API。 Windows 服务无法访问这些虚拟化控件。
为了解决您的程序,您需要在用户 session 中运行代码。我可能会建议在用户登录时触发的计划任务。 task scheduler APIs允许您创建一个任务,该任务会在用户登录时创建一个 COM 对象。通过该 COM 对象,您可以与您的服务进行通信,然后代表用户执行静音操作。
关于windows - 从远程登录 session 启动时,我的服务无法在远程计算机上设置 WinXP 混音器 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8268201/