Windowsのサービス上でログインユーザの有無を確認する方法

解決


ヤマ  2013-09-13 19:45:41  No: 73815

Windowsのサービスプログラムを作成しています。
サービス内で定期的に処理を行うのですが、そのときにログインユーザがいるか?ログオフ中かのチェックを行いたいのですがわかりません。簡単な方法、APIをご存知の方がいましたら教えていただけたら幸いです。
よろしくお願いいたします。


オショウ  2013-09-14 02:28:37  No: 73816

どんなことを行うかで、別の方法も可能かと。

ただ、ログオンしているか?
と言うだけなら、ターミナルサービスAPIか
デスクトップに対してハンドルを取得可能かどうかを
確認すれば代用できるかと。

OpenDesktop API
ttp://msdn.microsoft.com/ja-jp/library/cc410964.aspx

ハンドルが取れたらログオンユーザーがいる・・・とか。

※  この場合、Windowsサービスからデスクトップに
    アクセス権限が無いと即エラーになるので、注意
    が必要です。
    要は、
    デスクトップとの対話を許可
    しないと、ダメと言うことです。

以上。参考まで


ヤマ  2013-09-17 19:08:12  No: 73817

返信ありがとうございます。  ご連絡遅れましたm(_ _)m
教えていただいた方法で実装できそうな感じがします。もう少し確認を行いたいとおもいます。

こちらは、質問後に自分で考えた方法なのですが、1点確認をさせてください。
起動中のプロセスを列挙して、その中にtaskhost.exeが存在するかでも、ログインユーザの有無を確認できるかと思いました。  ログオフ状態でtaskhost.exeが起動することはないと思っているのですが、間違いないでしょうか?

再度の質問失礼します。


オショウ  2013-09-18 04:21:15  No: 73818

タスクスケジューラでログオフ中でも動作させたいものが登録
されていた場合、それが管理者権限起動が指定されていれば、
一時的にでもプロセスとして存在してしまうことになります。

それが無いなら可能でしょう。

以上。


ヤマ  2013-09-18 18:44:26  No: 73819

ありがとうございます。タスクスケジューラの件は盲点でした。
長期的に起動することは無くてもタイミングでバッティングする可能性がありますね。
ご教授ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加