SessionView
تطبيق وحدة تحكم خفيف بلغة C# لتعداد وعرض جميع جلسات المستخدمين على Windows Server، بما في ذلك معرفات GUID للجلسات.
الميزات
- التعداد الكامل للجلسات: يسرد جميع الجلسات النشطة على خادم Windows
- معلومات مفصلة عن الجلسة: يعرض Session ID و Station Name و Connection State و Username و Domain
- استرجاع GUID الجلسة: يستخرج المعرف الفريد GUID لكل جلسة من سجل Windows
- كشف حالة الاتصال: يظهر ما إذا كانت الجلسات Active أو Disconnected أو Idle إلخ.
- إخراج وحدة تحكم نظيف: تنسيق إخراج سهل القراءة لتحليل سريع للجلسات
المتطلبات
- 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
الاستخدام
- تشغيل كمسؤول: هذه الأداة تحتاج إلى رمز مميز مرتفع (elevated token)
- سيقوم التطبيق تلقائياً بتعداد جميع الجلسات وعرض المعلومات
مثال على الإخراج
=== 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: الجلسة قيد التهيئة
تفاصيل تقنية
واجهات برمجة التطبيقات المستخدمة
- 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
- يتطلب صلاحيات المسؤول للوصول إلى معلومات الجلسة
- قد لا تتوفر جميع المعلومات لبعض الجلسات حسب حالتها
استكشاف الأخطاء وإصلاحها
خطأ "Access Denied"
- تأكد من تشغيل التطبيق كمسؤول
- تحقق من أن لديك الأذونات المناسبة على الخادم
معرفات GUID مفقودة للجلسات
- هذا طبيعي لبعض جلسات النظام (مثل الجلسة 0)
- بعض الجلسات المفصولة قد لا تحتفظ بمعرف GUID الخاص بها في السجل
عدم العثور على جلسات
- تحقق من أنك تعمل على Windows Server مع تمكين خدمات المحطة الطرفية Terminal Services
- تحقق من تثبيت دور خدمات سطح المكتب البعيد Remote Desktop Services
حالات الاستخدام
- إدارة النظام: مراقبة جلسات المستخدم النشطة والمفصولة
- إدارة سطح المكتب البعيد: تتبع اتصالات RDP وحالاتها
- التدقيق الأمني: تحديد جلسات المستخدم ومعرفاتها الفريدة
- نصوص إدارة الجلسات: التكامل مع أدوات الأتمتة لتنظيف الجلسات
- استكشاف الأخطاء وإصلاحها: تشخيص المشكلات المتعلقة بالجلسات على خوادم المحطة الطرفية Terminal Servers
الترخيص
هذا المشروع مقدم كما هو لأغراض تعليمية وإدارية.
المساهمة
لا تتردد في تقديم المشكلات (issues) وتفرع المستودع وإنشاء طلبات السحب (pull requests) لأي تحسينات.