哪个 Winlogon 会话附加到声音设备?

哪个 Winlogon 会话附加到声音设备?

我想选择并播放存储在Windows 10 家庭版电脑通过家庭 WiFi 网络连接的移动设备。我的电脑上运行着一个 Apache 网络服务器,作为登录的服务本地系统帐户。用户可以通过平板电脑的 URL 浏览主页http://192.168.1.10/Music/index.php,选择一首歌曲或播放列表,然后触摸按钮[PLAY]

首先,我尝试使用 PHP 函数在 PC 上启动选定的歌曲执行()

exec("\"C:\\Program Files\\mplayerc.exe\" /play /close \"$SelectedSong.mp3\"");

但这不起作用,播放器(经典版本媒体播放器来自旧版 Windows)立即终止。显然,因为它是在 Apache 服务(会话编号 0)的上下文中启动的,并且无法访问扬声器,这些扬声器专用于当前登录我家用电脑本地桌面的另一个用户。
允许服务Apache 2.4与桌面交互没有变化。

我找到了一个解决方案执行程序这使得执行程序与另一个用户的桌面进行交互(如果知道他们的会话号):

$SessionNr=1;
exec("\"C:\\Program Files\\psexec.exe\" -i $SessionNr -u .\\MyName -p MyPwd \"C:\\Program Files\\mplayerc.exe\" /play /close \"$SelectedSong.mp3\"");

这适用于固定$会话编号=1什么时候我的名字在 PC 上本地登录(无需担心在 PHP 脚本中泄露我的凭据)。尽管如此,我希望我的脚本能够在显示器关闭、PC 刚刚重新启动或从休眠状态唤醒时运行,并且无论谁登录(如果有的话)。

如何找到当前连接的桌面和声音设备的 Windows 登录会话的序数?

我曾尝试过“三秒的沉默.mp3“ 和$会话编号从 0 到 9 变化并测量经过的时间(未连接的桌面立即返回),但这种方法冗长且不可靠。我猜想要的信息隐藏在Windows 注册表但我不知道去哪儿搜索。

相关内容