windows - 从远程登录 session 启动时,我的服务无法在远程计算机上设置 WinXP 混音器 Prop

标签 windows visual-c++ remote-desktop audio

标题并没有吓跑你。伟大的!
这就是我想要做的:
我有一项服务会在某个时间点播放非常重要的声音。因为它非常重要,所以我确保混音器被静音,并且音量在启动时处于适当的水平。
当我启动本地登录到它正在执行的计算机的服务时,这工作正常。
但是,当我从远程桌面 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/

相关文章:

visual-c++ - 如何在不重建的情况下触发 VS 构建后事件

ms-access - 远程桌面连接难题

impersonation - 使用 cassia 以及用户名和密码获取 session

windows - OpenSSL 和读取 openssl.conf 文件时出错

c# - 是否有用于命令行/控制台程序的开源 C# 库?

c# - 如何播放 Windows 通知声音? (它未在 System.Media.SystemSounds 中定义)

windows - 在 WebDAV 响应中显示错误描述

c++ - 静态对象的奇怪输出

c++ - 将 MFC 控件传递给线程还是传递句柄?

delphi - Windows 7 上 WTSOpenServer 发生奇怪崩溃(仅在 Delphi 2009/2010 中)