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

わんくま同盟

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

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


■93065 / )  Re[1]: 「ユーザーの切り替え」を知りたい
□投稿者/ とっちゃん (643回)-(2019/11/18(Mon) 13:14:39)
No93059 (りんく さん) に返信

> 当ソフト起動時に「System.Environment.UserName」で名前を保持しておき
> 「System.Environment.UserName」を取得するポーリングを実行し
> 起動時のUserNameとポーリングでのUserNameが不一致だったらログアウトするとしてみたのですが
> ユーザーを切り替えてもポーリング内のUserNameは起動時のUserNameと同じでした。
> 今現在、ログインしているユーザーのユーザー名を取得することはできないのでしょうか?
>
> どのようにすれば実現できるのか、わかる方がおられましたら、ご教授願います。

あるアカウントで起動したプログラムは別のアカウントを認識できません。

この場合、ユーザーAでログインした状態でアプリを起動しても
ユーザーBのログイン状況内ではプログラムは起動していない状態です。

タスクマネージャで見てみればすぐにわかります。

そのため、ポーリングしても判別はできません。


最初の一歩としてはここかな?(日本語はありません)
https://docs.microsoft.com/en-us/windows/win32/shell/fast-user-switching?WT.mc_id=DT-MVP-32182

あるユーザーがログイン状態のまま別のユーザーに切り替えできる仕組みを「Fast User Switching」と呼びます。

通常別ユーザーと切り替えたなどは必要ありませんが、それを識別できる必要がある場合メッセージを受け取れるように
する仕組みが用意されています。

Windows API と、メッセージを受け取れる必要があるので、それなり以上に面倒な実装になります。


ところで、アプリのログイン機能というのはそのマシンの中に情報を持っているのでしょうか?
ログインのアカウントが変わると、AppData フォルダは別物になります。また、ドキュメントなどのフォルダは別になります。
そのあたりは問題はありませんか?

返信 編集キー/


管理者用

- Child Tree -