VNC や TeamViewer に似た、オープンソースのリモート デスクトップ ツールを作成しています。TeamViewer がユーザーの切り替え画面またはワークステーションのロック画面で画面をキャプチャし続け、リモート ユーザーがパスワードを入力してワークステーションのロックを解除できるようにしていることに気付きました。私も同じことをしたいです。
もう読んだ:
https://stackoverflow.com/questions/9485530/capturing-image-during-windows-logon-invalid-password
Windows 7 のログオン画面でキーをキャッチする方法は?
Windows XP で C# を使用してログオン画面にウィンドウを表示する
これらの投稿から、分離されたセッションで入力をシミュレートすることは、SendInput() への単純な呼び出しではないことがわかりました。しかし、ドライバーを使用することは可能ですか (具体的にはキーボード フィルター ドライバーだと思いますが、よくわかりません)。もしそうなら、C# で (ユーザーのセッションの外で実行されるように) インターセプト ドライバーとやり取りしてキーの押下をシミュレートするサービスを作成することを考えています。
「試してみませんか?」という質問に対して、私がそのようなサービスをテストするための .NET ラッパーはまだありません。その .NET ラッパーの作成に時間を費やしたくありません。
Interception という名前のキーボード ドライバーを見つけました (これは将来オープン ソースでリリースされる予定です)。ここでソースを直接見つけることができます (ソースは、実際のカーネル ドライバーを囲む C 通信 API ラッパーのみです)。
もう 1 つ質問があります...ドライバーを構成するファイルについて混乱しています。C でプログラムされた彼の Interception DLL ライブラリは、.DLL にコンパイルされます。しかし、一部の .sys 拡張子のドライバーではありませんか?そのインターセプション DLL を実際のドライバーにコンパイルするにはどうすればよいでしょうか?そして、どのようにインストールしますか?
編集: .NET ラッパーは存在します。「x」キーを押したときにパスワード全体を入力するようにサンプル コンソール アプリを改造したところ、ワークステーションのロック画面だけでなく、Windows ログオン画面でも正常に機能しました。それでうまくいきます。