خدمات Windows
مقدمة
خدمات Windows هي برامج تعمل في الخلفية، بشكل مستقل عن جلسات المستخدم. توفر وظائف أساسية للنظام.
خصائص الخدمات
الاختلافات مع التطبيقات
| الخاصية | التطبيق | الخدمة |
|---|---|---|
| الواجهة | عادةً رسومية | بدون واجهة (أو محدودة) |
| الجلسة | مرتبطة بمستخدم | مستقلة |
| بدء التشغيل | يدوي بواسطة المستخدم | تلقائي عند الإقلاع |
| التنفيذ | أثناء الجلسة | مستمر في الخلفية |
أنواع بدء التشغيل
| النوع | الوصف |
|---|---|
| تلقائي | يبدأ عند إقلاع النظام |
| تلقائي (مؤجل) | يبدأ بعد الإقلاع، مع تأخير |
| يدوي | يبدأ فقط عند الطلب |
| معطل | لا يمكن أن يبدأ |
حسابات الخدمة
| الحساب | الامتيازات | الاستخدام |
|---|---|---|
| LocalSystem | كامل (مسؤول) | خدمات النظام الحرجة |
| LocalService | محدود، محلي فقط | خدمات قليلة الامتيازات |
| NetworkService | محدود، وصول للشبكة | خدمات تحتاج إلى الشبكة |
| حساب المستخدم | حسب الحساب | خدمات مخصصة |
الإدارة عبر الواجهة الرسومية
Services.msc
Win+R > services.msc
المعلومات المتاحة:
- اسم ووصف الخدمة
- الحالة (قيد التشغيل، متوقف)
- نوع بدء التشغيل
- حساب التنفيذ
مدير المهام
علامة التبويب الخدمات لعرض سريع.
الإدارة عبر PowerShell
عرض الخدمات
# جميع الخدمات
Get-Service
# الخدمات قيد التشغيل
Get-Service | Where-Object {$_.Status -eq "Running"}
# البحث حسب الاسم
Get-Service -Name "*update*"
# مع تفاصيل WMI
Get-WmiObject Win32_Service | Select-Object Name, DisplayName, State, StartMode, PathName
بدء/إيقاف الخدمات
# بدء
Start-Service -Name "NomService"
# إيقاف
Stop-Service -Name "NomService"
# إعادة تشغيل
Restart-Service -Name "NomService"
# مع تأكيد
Stop-Service -Name "Spooler" -Confirm
تعديل نوع بدء التشغيل
# تحويل إلى تلقائي
Set-Service -Name "NomService" -StartupType Automatic
# تعطيل
Set-Service -Name "NomService" -StartupType Disabled
إنشاء خدمة
# إنشاء خدمة جديدة
New-Service -Name "MonService" `
-BinaryPathName "C:\chemin\vers\programme.exe" `
-DisplayName "Mon Service Personnalise" `
-Description "Description du service" `
-StartupType Manual
# حذف (عبر sc.exe)
sc.exe delete "MonService"
الإدارة عبر CMD
أمر SC (التحكم في الخدمة)
:: عرض الخدمات
sc query
:: حالة خدمة
sc query "NomService"
:: بدء
sc start "NomService"
:: إيقاف
sc stop "NomService"
:: تكوين بدء التشغيل
sc config "NomService" start= auto
sc config "NomService" start= disabled
:: إنشاء خدمة
sc create "MonService" binPath= "C:\chemin\programme.exe"
:: حذف
sc delete "MonService"
أمر NET
:: بدء
net start "NomService"
:: إيقاف
net stop "NomService"
خدمات النظام الهامة
الخدمات الحرجة
| الخدمة | الاسم القصير | الدور |
|---|---|---|
| Windows Update | wuauserv | التحديثات |
| Windows Defender | WinDefend | مكافحة الفيروسات |
| Remote Procedure Call | RpcSs | الاتصال بالنظام |
| DCOM Server Process Launcher | DcomLaunch | تفعيل DCOM |
| Windows Event Log | EventLog | التسجيل |
| Task Scheduler | Schedule | المهام المجدولة |
| Print Spooler | Spooler | الطباعة |
خدمات الشبكة
| الخدمة | الاسم القصير | الدور |
|---|---|---|
| DHCP Client | Dhcp | تكوين IP تلقائي |
| DNS Client | Dnscache | حل الأسماء |
| Windows Firewall | mpssvc | جدار الحماية |
| Remote Desktop Services | TermService | سطح المكتب البعيد |
| Server | LanmanServer | مشاركة الملفات |
| Workstation | LanmanWorkstation | الوصول إلى المشاركات |
أمان الخدمات
المخاطر
-
خدمات ضعيفة:
- ملفات تنفيذية قابلة للتعديل
- أذونات واسعة جدًا
- حسابات ذات امتيازات عالية
-
ناقلات الهجوم:
- استبدال الملف التنفيذي
- اختطاف DLL
- مسار خدمة غير مقتبس
التحقق من الأمان
# التحقق من المسارات غير المقتبسة
Get-WmiObject Win32_Service | Where-Object {
$_.PathName -notmatch '^"' -and
$_.PathName -match ' '
} | Select-Object Name, PathName
# التحقق من أذونات الملفات التنفيذية
Get-WmiObject Win32_Service | ForEach-Object {
$path = $_.PathName -replace '"', '' -replace ' .*', ''
if (Test-Path $path) {
Get-Acl $path | Select-Object @{N='Service';E={$_.Name}}, Path, Owner
}
}
تعزيز الأمان
-
مبدأ أقل امتياز:
- استخدام LocalService أو NetworkService بدلاً من LocalSystem
- إنشاء حسابات خدمة مخصصة
-
حماية الملفات التنفيذية:
- أذونات مقيدة على الملفات التنفيذية
- مسارات بين علامات الاقتباس
-
تعطيل الخدمات غير الضرورية:
- Remote Registry
- Print Spooler (إذا لم يكن هناك طباعة)
- Telnet (قديم)
تبعيات الخدمات
فهم التبعيات
قد تعتمد خدمة على خدمات أخرى لتعمل.
# عرض تبعيات خدمة
Get-Service -Name "NomService" -DependentServices
# الخدمات التي تعتمد عليها هذه الخدمة
Get-Service -Name "NomService" -RequiredServices
مثال: Print Spooler
Print Spooler
├── يعتمد على: Remote Procedure Call (RPC)
└── خدمات تابعة: (غالبًا لا يوجد)
تسجيل الخدمات
سجل الأحداث
# الأحداث المتعلقة بالخدمات
Get-WinEvent -FilterHashtable @{
LogName = 'System'
ProviderName = 'Service Control Manager'
} -MaxEvents 20 | Format-Table TimeCreated, Message -Wrap
معرفات الأحداث الهامة
| معرف الحدث | الوصف |
|---|---|
| 7000 | لم يتمكن الخدمة من البدء |
| 7001 | تعتمد الخدمة على خدمة لم تبدأ |
| 7009 | انتهاء المهلة عند البدء |
| 7034 | انتهت الخدمة بشكل غير متوقع |
| 7035 | تم إرسال طلب بدء/إيقاف |
| 7036 | بدأت الخدمة أو توقفت |
تمارين
- قم بإدراج جميع الخدمات قيد التشغيل على نظامك
- حدد الخدمات التي تعمل تحت LocalSystem
- ابحث عن الخدمات ذات المسارات غير المقتبسة
- أنشئ خدمة اختبار واحذفها