1

私はこれに対する答えをインターネット全体で探していましたが、直接答えられていないように見えるので、尋ねてみようと思いました。

ケース シナリオ: 現在コンピューターの画面に表示されているもののスクリーンショットを撮りたいです。Windows のログオン画面なら、それでいいと思います。それがアクティブなユーザーのデスクトップなら、それになりたいです。ユーザーがアプリケーションを昇格させ、UAC プロンプトが表示される場合は、それを望んでいます。

多くの読書と試行錯誤によると、私の現在の設定は次のとおりです。

  • プログラムは Windows サービスとして実行されます
  • アクティブなユーザーのトークンを取得します
  • ユーザーのトークンを使用して CreateProcessAsUser を実行し、それ自体の別のインスタンスを生成します
  • スクリーンショットを撮り、パイプ経由で送り返します。

現在、これはログオンしているユーザーにとってはうまく機能していますが、UAC プロンプトが有効になっているとスクリーンショットが黒くなります。

また、この方法は明らかにログオン画面の取得には機能しません。

基本的に、TeamViewer はこの種のことをどのように達成するのだろうか? UACプロンプトをキャプチャしながら、ログオン画面とユーザーのセッションを問題なく切り替えることができます。それがどのようにこれを達成するかについて、私は非常に興味があります。

みんな、ありがとう!

4

1 に答える 1