Windowsのサービスプログラムを作成しています。
サービス内で定期的に処理を行うのですが、そのときにログインユーザがいるか?ログオフ中かのチェックを行いたいのですがわかりません。簡単な方法、APIをご存知の方がいましたら教えていただけたら幸いです。
よろしくお願いいたします。
どんなことを行うかで、別の方法も可能かと。
ただ、ログオンしているか?
と言うだけなら、ターミナルサービスAPIか
デスクトップに対してハンドルを取得可能かどうかを
確認すれば代用できるかと。
OpenDesktop API
ttp://msdn.microsoft.com/ja-jp/library/cc410964.aspx
ハンドルが取れたらログオンユーザーがいる・・・とか。
※ この場合、Windowsサービスからデスクトップに
アクセス権限が無いと即エラーになるので、注意
が必要です。
要は、
デスクトップとの対話を許可
しないと、ダメと言うことです。
以上。参考まで
返信ありがとうございます。 ご連絡遅れましたm(_ _)m
教えていただいた方法で実装できそうな感じがします。もう少し確認を行いたいとおもいます。
こちらは、質問後に自分で考えた方法なのですが、1点確認をさせてください。
起動中のプロセスを列挙して、その中にtaskhost.exeが存在するかでも、ログインユーザの有無を確認できるかと思いました。 ログオフ状態でtaskhost.exeが起動することはないと思っているのですが、間違いないでしょうか?
再度の質問失礼します。
タスクスケジューラでログオフ中でも動作させたいものが登録
されていた場合、それが管理者権限起動が指定されていれば、
一時的にでもプロセスとして存在してしまうことになります。
それが無いなら可能でしょう。
以上。
ありがとうございます。タスクスケジューラの件は盲点でした。
長期的に起動することは無くてもタイミングでバッティングする可能性がありますね。
ご教授ありがとうございました。
ツイート | ![]() |