C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 「ユーザーの切り替え」か判断するには?


(過去ログ 92 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■54849 / inTopicNo.1)  「ユーザーの切り替え」か判断するには?
  
□投稿者/ C#初心者 (1回)-(2010/11/06(Sat) 19:58:11)

分類:[C#] 

C#を使っています初心者です。Visual Studio 2010 Express Edition、OSはWindows XPです。

「ユーザーの切り替え」状態かどうかを判断するには、どうすればよいのでしょうか?

よろしくお願いします。
引用返信 編集キー/
■54852 / inTopicNo.2)  Re[1]: 「ユーザーの切り替え」か判断するには?
□投稿者/ Azulean (636回)-(2010/11/06(Sat) 21:45:33)
逆にお聞きしてみたいのですが、なぜ、それが必要なのでしょうか?

ちなみに、”「ユーザーの切り替え状態」”とは何を指していますか?
多分、下記の(1)だと思いますが、この状態で元のユーザーに再度切り替えた場合も含まれるのですか?

(1)ユーザー切り替え操作でログオンしたユーザーで作業している状態。
 →この状態で再度切り替えて、最初のユーザーに戻したときも同じか?
(2)ユーザーアカウントを選択、あるいは入力する画面を表示している状態。
(3)ログオフやユーザー切り替えなどが選択できる画面を表示している状態。
引用返信 編集キー/
■54863 / inTopicNo.3)  Re[2]: 「ユーザーの切り替え」か判断するには?
□投稿者/ C#初心者 (2回)-(2010/11/07(Sun) 13:40:29)
No54852 (Azulean さん) に返信
> 逆にお聞きしてみたいのですが、なぜ、それが必要なのでしょうか?
>
> ちなみに、”「ユーザーの切り替え状態」”とは何を指していますか?
> 多分、下記の(1)だと思いますが、この状態で元のユーザーに再度切り替えた場合も含まれるのですか?
>
> (1)ユーザー切り替え操作でログオンしたユーザーで作業している状態。
>  →この状態で再度切り替えて、最初のユーザーに戻したときも同じか?
> (2)ユーザーアカウントを選択、あるいは入力する画面を表示している状態。
> (3)ログオフやユーザー切り替えなどが選択できる画面を表示している状態。

言葉足らずで申し訳ありません。
上記に挙げてくださった例に当てはまるかは分かりませんが、ユーザーの切り替え画面とはユーザーアカウントを選択、あるいは入力する画面を表示している状態でかつログオンしているユーザーが作業している状態を言いたかったんです。

つまり、パスワードを入力しなければログオンできない状態で、内部では処理を実行している・・・という状態。
説明が下手で申し訳ないです。

Windowsキー + Lを押したあとの状態でもあります。

このときの状態を判断するためには、どうすればよいのでしょうか。
引用返信 編集キー/
■54867 / inTopicNo.4)  Re[3]: 「ユーザーの切り替え」か判断するには?
□投稿者/ 魔界の仮面弁士 (1916回)-(2010/11/07(Sun) 17:23:38)
No54863 (C#初心者 さん) に返信
> 言葉足らずで申し訳ありません。
Azulean さんの質問の繰り返しになりますが、『なぜ、それが必要なのでしょうか?』


> つまり、パスワードを入力しなければログオンできない状態で、内部では処理を実行している・・・という状態。
「内部では処理を実行している」というのは、何を指していますか?
(起動直後で誰もログオンしていなくとも、サービスは既に起動開始されていますよね)

パスワード入力画面(Winlogonデスクトップ?)が出ている状態としては、
 (a) まだ誰もログオンしていない状態
 (b) 誰か一名がログオンしている状態
 (c) 複数の異なるユーザーが同時にログオンしている状態
 (d) 複数の同じユーザーが同時に複数のセッションを開いている状態
といったパターンが想像されます。

「かつログオンしているユーザーが作業している状態」ということは、
上記のうち a は除外するという事でしょうけれども、その段階であっても、
複数のユーザーが作業中である可能性があるわけですよね。


ログオンセッションについて調べるだけならば、Win32_LogonSession クラスなどで
得ることができそうですが、パスワード(あるいは生体認証等も含む)入力画面の
処理中かどうかを調べるとなると、GINA や ICredentialProvider などを
実装する事になるかもしれません。
http://msdn.microsoft.com/ja-jp/magazine/cc163489.aspx
引用返信 編集キー/
■54870 / inTopicNo.5)  Re[4]: 「ユーザーの切り替え」か判断するには?
□投稿者/ C#初心者 (3回)-(2010/11/07(Sun) 22:11:33)
>なぜ、それが必要なのでしょうか?
詳しいことは話すと長くなりますが、ログオンした状態での作業中に一定時間放置すると、ログオフしたいのですが、普通にログオフすると作業中のデータが消えてしまいますよね?(もし違ったらすみません。)
ですので、一定時間放置するとログオフではなく、単にパスワードを入力させるだけにするために、この方法をとろうと思いました。

もしこれ以外に方法があれば教えてくださいませ。

>パスワード入力画面(Winlogonデスクトップ?)が出ている状態としては、
> (a) まだ誰もログオンしていない状態
> (b) 誰か一名がログオンしている状態
> (c) 複数の異なるユーザーが同時にログオンしている状態
> (d) 複数の同じユーザーが同時に複数のセッションを開いている状態
>といったパターンが想像されます。

>「かつログオンしているユーザーが作業している状態」ということは、
>上記のうち a は除外するという事でしょうけれども、その段階であっても、
>複数のユーザーが作業中である可能性があるわけですよね。

誰が、もしくは何人が、というのは特に関係ありません。
ログオン(デスクトップが普通に表示されている)している状態か、ログオンしながらもパスワードの入力が必要かどうかを調べたいのです。

>GINA や ICredentialProvider
ありがとうございます。難しそうですね。。。
他にも考えてみます。
引用返信 編集キー/
■54871 / inTopicNo.6)  Re[5]: 「ユーザーの切り替え」か判断するには?
□投稿者/ Azulean (639回)-(2010/11/07(Sun) 22:37:59)
2010/11/07(Sun) 22:39:45 編集(投稿者)

No54870 (C#初心者 さん) に返信
> ですので、一定時間放置するとログオフではなく、単にパスワードを入力させるだけにするために、この方法をとろうと思いました。
単に Windows でそう設定すれば良いと言うことではないのでしょうか。
自作のソフトウェアでロック画面に遷移させないといけない事情があるのでしょうか。
(スクリーンセーバーの復帰時にパスワードを入力させるという設定とか)

> ログオン(デスクトップが普通に表示されている)している状態か、ログオンしながらもパスワードの入力が必要かどうかを調べたいのです。
WTSRegisterSessionNotificationEx あたりで待ち受けていれば、状態の変化通知は受けられますね。
「今がどうか」ではなく、「どう変わったか」を知ることで、今知りたいことが実現できるかも知れません。

API でなくて、.NET でというところであれば、以下のクラスのイベントあたりに鍵が転がってるかも。
http://msdn.microsoft.com/ja-jp/library/microsoft.win32.systemevents_events.aspx
引用返信 編集キー/
■54877 / inTopicNo.7)  Re[5]: 「ユーザーの切り替え」か判断するには?
□投稿者/ 魔界の仮面弁士 (1917回)-(2010/11/08(Mon) 10:49:13)
No54870 (C#初心者 さん) に返信
> ログオンした状態での作業中に一定時間放置すると、ログオフしたいのですが
たとえば、同時に 3 人のユーザーがログオンしている状態だとして、
そのうちの 1 人だけが作業中で、他の 2 人は放置状態というような場合、
3 人すべてをログオフさせるのでしょうか。誰もログオフさせないのでしょうか。
あるいは、ログオフさせるセッションとログオンさせたままのセッションが
混在することになるのでしょうか。


> 普通にログオフすると作業中のデータが消えてしまいますよね?(もし違ったらすみません。)
作業データが自作アプリケーションだけの話であれば、FormClosing イベントあたりに
作業保存処理を書いておいては如何でしょう。

デスクトップ全体の話であれば、ログオフするのではなくサスペンドさせるという手もあります。
特定のユーザーだけでは無く、他のユーザーのセッションも切断される事になりますけれどね。
http://dobon.net/vb/dotnet/system/suspend.html


> 単にパスワードを入力させるだけにするために、この方法をとろうと思いました。
Azulean さんが書かれているように、スクリーンセーバーを使うのは如何でしょうか。
ポリシーを設定すれば、パスワードを強制したり、待機時間を変更不可にすることもできますし。


> ログオンしながらもパスワードの入力が必要かどうかを調べたいのです。
それは何故でしょうか?

ログオフだと作業状態が保存されないので、ログオフしない方法を選択しよう考えた、という
話は分かりましたが、何故パスワードの入力判定が必要なのかという点が読み取れませんでした。
(作業中のデータに影響を与えないなら、切り替えの判定も不要な気がしますが…)
引用返信 編集キー/
■54889 / inTopicNo.8)  Re[6]: 「ユーザーの切り替え」か判断するには?
□投稿者/ C#初心者 (4回)-(2010/11/08(Mon) 17:33:39)
みなさんありがとうございます。

自分の実力からしても、スクリーンセーバーを使った方法が最良みたいでした。

・・・ということで、解決しました。本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -