Delphi で Windows ロック画面のロックを解除するにはどうすればよいですか? Google または Stackoverflow で何も見つかりませんでした。keybd_event を使用してパスワードを入力しようとしましたが、ロック画面でイベントが機能しないようです。
5 に答える
ユーザー空間からプログラムでロック画面をロック解除することはできません。それは設計によるものです。
わかりました、それを明確にしましょう。文書化された API を使用すると、これを行うことはできません。@Remko が彼の SasLibEx 製品で行ったように、文書化されていない API をリバース エンジニアリングする必要があります。
Remko Weijnenは、この方向で非常に興味深いプロジェクトを行っています。彼は、コンピュータをロックしたユーザーのパスワードを知らなくても、ローカル/リモートの Windows XP ステーションのロックを解除できるコマンドライン ツール ( Winstation Locker ) をリリースしました。
Windows Vista 以降では、ユーザー名/パスワードなしで特定のターミナル サービス セッションのロックを解除できるSasLibEx ** ライブラリを開発しました。
どちらの方法でも、宛先コンピューターで管理者権限/アカウントを持っている必要があります。
注意してください、これらのツールはすべて、違法、不適切、不寛容、または犯罪 (?) と見なされる可能性のある厄介なハックを使用しています。クライアント/雇用主と話し合う必要があり、注意して使用する必要があります。
** SasLibEx は商用製品です
Steamlink (Steam ゲームを大画面にストリーミングできるようにするハードウェア) には現在、問題があります。画面が家の別の場所にある場合、プレイするには PC まで歩いてロックを解除する必要があります。その後、大画面に戻ります。
痛みを軽減するために、コミュニティの人々は次のスクリプトを思い付きました。
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$sessionid=((quser $env:USERNAME | select -Skip 1) -split '\s+')[2]; tscon $sessionid /dest:console" 2> UnlockErrors.log
PC のロックをリモートで解除できます。Delphi から tscon.exe を呼び出して、同じものをエミュレートできます。