2009-03-11 24 views
2

現在アクティブなウィンドウや最後のマウスの動きのように、現在ログオンしているユーザーから情報を取得するC#サービスを作成しています。 私はすでにuser32.dllを使用してこれらの情報を取得できることを知りましたが、これはメソッドを呼び出すユーザーコンテキスト内でのみ機能します。サービスからログオンしたユーザーのアクティブなウィンドウを取得する方法

このようにして、私のサービスは自分自身についての情報しか取得できませんでしたが、「現実世界」のユーザーに関する情報は取得できませんでした。また、WTSEnumerateSessions、OpenWindowStation、EnumDesktopsなどを使用してこれを可能にする必要があると聞きましたが、これを行う方法を示す例は見つかりませんでした。

誰かが私の目標を達成する手掛かり(または多分いくつかのコード例)を持っていますか?

答えて

4

これは、ユーザーのセッションで実行されているアプリの仕事のように聞こえます。よく振る舞うサービスは、そのようなユーザーを詮索するべきではありません。 (私は正直には分かりませんが)それを行う方法がありますが、それは非常に適切な音ではありません。

最近のバージョンのWindowsでは、コンソールセッション(セッション0)は管理目的に限定されており、ユーザーは(通常は)そこにいないことに注意してください。コンソールセッションがゼロ、1つ、または多数ある場合があります。

+0

確かに。私はこの方法はあまり好きではありませんが、アプリケーションがユーザーのセッションで実行される場合、ユーザーはそれをキャンセルすることができます。これは、サービスとして実行される場合に防止できます。 – Marcus

+0

サービスでアプリケーションを再起動してください。 – Samuel

+0

私はユーザーアプリケーションと追加のサービスを作成することも考えましたが、サービスがユーザーの資格情報を持たずにユーザーのセッションでアプリケーションを再起動する方法はありますか? – Marcus

関連する問題