none
【Windows10】 ユーザーのロック状態の取得方法について RRS feed

  • 質問

  • Windows10において、C++を使用して、あるユーザーがロック中かどうかを取得したいと思います。

    Windows10以前は、[WTSQuerySessionInformation]関数を使用して、

    [WTSConnectState]の状態が[WTSActive]ならログオン中、

    [WTSDisconnected]ならロック中と判定できました。

    Windows10では仕様が変わったようで、ロック直後のログオン画面では、

    そのロックしたユーザーのセッションが[WTSActive]のままになっていました。

    このロック直後のログオン画面で、そのユーザーがロック中かどうかを判定するには、どうしたら良いでしょうか?

    2016年3月9日 5:19

回答

  • すみません。解決方法ではなく質問ですが、ロックしているかどうかの確認はネットワークごしの確認でしょうか?

    確認先のPCにプログラムを常駐させることが可能であれば、WTSRegisterSessionNotification関数を使ってWTS_SESSION_LOCK、WTS_SESSION_UNLOCKメッセージを受け取ることでロック状態の判定が可能なような気がします。

    • 回答としてマーク Limi.S 2016年3月10日 2:30
    2016年3月9日 9:57

すべての返信

  • すみません。解決方法ではなく質問ですが、ロックしているかどうかの確認はネットワークごしの確認でしょうか?

    確認先のPCにプログラムを常駐させることが可能であれば、WTSRegisterSessionNotification関数を使ってWTS_SESSION_LOCK、WTS_SESSION_UNLOCKメッセージを受け取ることでロック状態の判定が可能なような気がします。

    • 回答としてマーク Limi.S 2016年3月10日 2:30
    2016年3月9日 9:57
  • 返信ありがとうございます。

    確認はネットワーク越しではありません。


    目的としては、資格情報プロバイダーの開発において、パスワードの変更画面の呼び出し元が

    以下のどちらかであるかを判別したいと考えています。

    ・ ログオン中(Ctrl+Alt+Delを押して出てくるメニューからのパスワード変更)

    ・ ログオン前(ログオン時にパスワードの有効期限が切れていたために表示されるパスワード変更画面)

    Windows10では、例えばユーザーAさんがロックした直後の画面から、ユーザーBさんがログオンできるなど、

    他人のセッション上でログオンできる仕様になっているようです。

    すると、Bさんにとってはログオン前にも関わらず、パスワード変更画面でセッション情報を取得すると、

    "Aさんがログオン中"という情報が取れてしまい、上記2つの画面を識別できずに困っていました。


    資格情報プロバイダーとは別に、ユーザーの状態をWTSRegisterSessionNotificationを使用して

    管理する常駐プログラムを用意してみようと思います。

    ありがとうございましたm( _ _ )m

    2016年3月10日 2:29