1

たとえば、ある時点でローカルサービスアプリケーションからWTSEnumerateSessionsを呼び出し、現在のユーザーセッションIDのリストを取得するとします。したがって、後で特定のユーザーセッションがまだ同じ状態にあるかどうかを知る必要がある場合、WTS_SESSION_INFO :: SessionIdが一意であると信頼できますか?そうでない場合は、これを行う方法は?

4

3 に答える 3

2

ログイン時に未使用の最小番号としてセッションIDが割り当てられます。

したがって、ID 1を持っていて、ログオフし、ログオンすると、ログオン時に1が使用可能であったため、ID1も取得されます。

ログオフしたことがない場合は、ID1が使用されていたためID2を取得します。その後、ログオフして次のユーザーにとどまると、未使用の番号が1であるため、ID 1(3ではなく)が再度割り当てられます。

于 2012-10-26T07:54:32.083 に答える
2

Windows は、すべてのログオン セッションに SID を与えます。MSDN にはそれを参照するためのサンプル コードがあり、特定のログオン セッションに対して一意で一定であることが保証されています。ユーザーがログアウトして再度ログインすると、新しいログオン SID が割り当てられます。

同じユーザーがローカルでログオンし、同時にリモートでログオンした場合、ログオン セッションごとに異なるログオン SID が存在します。この画像は私が何を意味するかを示しています:

Alice には、異なるログオン SID を持つ 2 つのログオン セッションがあります。.

(免責事項 - 私のブログ投稿から盗みました)

このコマンドでログオン SID を取得できます。コードを記述せずに what-if シナリオを実行すると便利です。

c:\>whoami /logonid
S-1-5-5-0-329693570

Windows Server 2008 でテスト済み。他のバージョンの YMMV。

于 2012-10-26T03:12:49.597 に答える
0

セッション ID は、セキュリティ ID と同じではありません。セッションには、ある状態で誰かがログインしている場合と、ログインしていない場合があります。WTSEnumerateSessions を呼び出すと、誰かがセッション 1 でログインしていることがわかり、後でその人がログアウトし、後で別の誰かがログインして Windows がセッション 1 を与える可能性があります。その後、再び WTSEnumerateSessions を呼び出します。そのため、2 つの変更を経て以前とは異なるユーザーによって使用された後、状態は以前と同じである可能性があります。これをユニークと呼びますか?ユニークって言ってる意味がわからん

于 2012-10-26T07:02:19.083 に答える