質問: 私のサービスは、リモートログインセッションから起動したときに、リモートコンピュータにWinXPサウンドミキサーのプロンプトを設定できません タイトルはあなたを恐れていませんでした。すばらしいです! これは私がやろうとしていることです: ある時点で非常に重要な音を出すサービスがあります。それはとても重要なので、私はミキサーが爆発していることを確認し、起動時に音量が適切なレベルにあることを確認します。 これは、実行中のコンピュータにローカルでログオンしたサービスを開始するとうまく動作します。 しかし、リモートデスクトップセッションからサービスを開始すると、ログオン時に「このコンピュータで再生」を選択すると音量調整ができません。 明らかな解決策は、「ログオン時にリモートコンピュータ上でPlayを選択」ですが、さまざまなユーザビリティ上の理由からこれは実現可能ではありません。 そう; M $の質問は「ログオン時に「このコンピュータで再生」が選択されていれば、リモートデスクトップセッションから起動されたサービスはどのようにローカルミキサーのメインボリュームを設定できますか? このサービスはWinXP上で動作し、C ++の恐ろしいMixer * APIを使用しています。 ありがとう、 リカード
回答: 問題は、OSサービスとしてTSユーザーのセッションでコードが実行されていない限り、TSユーザーのボリュームを制御できないことです。 TSサービスは、サーバーからクライアントへのリモートオーディオを実現するために、すべてのオーディオAPIを仮想化します。これらの仮想化されたコントロールは、Windowsサービスからアクセスできません。 プログラムを解決するには、ユーザーのセッションでコードを実行する必要があります。私はユーザーのログオン時に起動されるスケジュールされたタスクを提案するかもしれません。 タスクスケジューラAPI ユーザーログオン時にCOMオブジェクトを作成させるタスクを作成することができます。そのCOMオブジェクトから、サービスと通信してから、ユーザーに代わってミュート操作を実行できます。