SessionView
Windows Server上のすべてのユーザーセッション(セッションGUIDを含む)を列挙して表示する軽量なC#コンソールアプリケーションです。
機能
- 完全なセッション列挙: Windowsサーバー上のすべてのアクティブなセッションを一覧表示します
- 詳細なセッション情報: セッションID、ステーション名、接続状態、ユーザー名、ドメインを表示します
- セッションGUIDの取得: Windowsレジストリから各セッションの一意のGUID識別子を抽出します
- 接続状態の検出: セッションがアクティブ、切断、アイドルなどの状態かを表示します
- クリーンなコンソール出力: 迅速なセッション分析のための読みやすいフォーマット出力
必要条件
- Windows Server(2012 R2以降)またはWindows Client(Windows 10/11)
- .NET Framework 4.7.2以上
- 管理者権限(セッション情報とレジストリへのアクセスに必要)
インストール
オプション1: ソースからビルド
- リポジトリをクローンまたはダウンロードします
- Visual Studio 2019以降でソリューションを開きます
- ソリューションをビルドします(Ctrl+Shift+B)
- 実行可能ファイルは
bin\Debug または bin\Release に配置されます
オプション2: コマンドラインビルド
# Using MSBuild (Developer Command Prompt for Visual Studio)
msbuild SessionView.csproj /p:Configuration=Release
# Or using CSC directly
csc /out:SessionView.exe /platform:anycpu Program.cs
使用方法
- 管理者として実行: このツールは昇格されたトークンが必要です
- アプリケーションは自動的にすべてのセッションを列挙し、情報を表示します
出力例
=== Windows Server Session Enumerator ===
Found 3 session(s)
Session 1:
Session ID: 0
Station Name: Services
State: WTSDisconnected
Username: (No user logged in)
Session GUID: (Not available)
Session 2:
Session ID: 1
Station Name: Console
State: WTSActive
Username: Administrator
Domain: MYSERVER
Session GUID: {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
Session 3:
Session ID: 2
Station Name: RDP-Tcp#1
State: WTSDisconnected
Username: JohnDoe
Domain: COMPANY
Session GUID: {B2C3D4E5-F6A7-8901-BCDE-F12345678901}
Press any key to exit...
セッション状態
アプリケーションは以下の接続状態を表示できます:
- WTSActive: ユーザーがセッションをアクティブに使用中
- WTSConnected: セッションが接続中
- WTSDisconnected: セッションは切断されているが実行中
- WTSIdle: セッションがアイドル状態
- WTSListen: セッションが接続を待機中
- WTSReset: セッションがリセット中
- WTSDown: セッションがダウン
- WTSInit: セッションが初期化中
技術詳細
使用されているAPI
- WTS API (wtsapi32.dll): セッションの列挙とセッション情報の問い合わせに使用
- Windows Registry API (advapi32.dll): レジストリからセッションGUIDを取得するために使用
レジストリの場所
セッションGUIDは次の場所に格納されています:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Remote\Terminal Services\Session\{SessionId}\SessionGuid
既知の制限事項
- セッション0(サービスセッション)には通常GUIDがありません
- セッション情報にアクセスするには管理者権限が必要です
- 一部のセッションでは、状態によってすべての情報が利用できない場合があります
トラブルシューティング
「アクセス拒否」エラー
- アプリケーションを管理者として実行していることを確認してください
- サーバー上で適切な権限を持っているか確認してください
セッションGUIDが見つからない
- これは特定のシステムセッション(セッション0など)では正常です
- 切断された一部のセッションはレジストリにGUIDを保持しない場合があります
セッションが見つからない
- ターミナルサービスが有効なWindows Server上で実行していることを確認してください
- リモートデスクトップサービスロールがインストールされているか確認してください
ユースケース
- システム管理: アクティブおよび切断されたユーザーセッションの監視
- リモートデスクトップ管理: RDP接続とその状態の追跡
- セキュリティ監査: ユーザーセッションとその一意識別子の特定
- セッション管理スクリプト: セッションクリーンアップのための自動化ツールとの統合
- トラブルシューティング: ターミナルサーバー上のセッション関連の問題の診断
ライセンス
このプロジェクトは教育および管理目的で現状のまま提供されます。
コントリビュート
改善のためのIssueの提出、リポジトリのフォーク、プルリクエストの作成を自由に行ってください。