01-10-12, 08:13 PM
كاتب الموضوع : magicsword
بسم الله الرحمن الرحيموحشتوني كتير منتدى فيجوال بيسك العرب و كل اعضائة الكرام.
في موضوع اليوم ,سوف نتحدث عن طريقة ادارة خدمات الويندوز Windows Services باستخدام اداة Service Controller المضمنة بداخل الفيجوال استديو , و ايضا طرح اداة مفتوحة المصدر افضل منها لمعالجة القصور في الاداة الاصلية للفيجوال استيديو.
ماهي خدمات الويندوز ؟
هي مجموعة من البرامج الصغيرة التي تعمل في الخلفية background لاداء وظيفة محددة اساسية, وليس لها واجهة رسومية GUI وبالتالي لا يمكن التعامل معها بطريقة مباشرة.
يمكن التحكم في خدمات الويندوز باستخدام Microsoft Management Console حيث يمكن ايقاف او تشغيل او ايقاف مؤقت للخدمات , وايضا التحكم في طريقة بدء التشغيل startup type من حيث جعلها يدوية Manual او تلقائية Automatic او معطلة Disabled . وايضا يمكن التحكم في طريقة عمل Service من خلال ال parameters.
خدمات الويندوز لها نوعان:
خدمات نظام التشغيل OS Services و التي تاتي مع الويندوز نفسة مثل خدمة التحديثات التلقائية Windows Update.
خدمات البرامج Third party services و هي تاتي مع تثبيت بعض من البرامج مثل برامج الانتي فيروس.
كيف يمكن التحكم في خدمات الويندوز من خلال VB.NET ؟
يمكن ذلك باستخدام اداة Service Controller والمشتقة من system.serviceprocess .
حيث تمكنك هذة الاداة من التحكم في ايقاف او تشغيل او ايقاف مؤقت للخدمات , ومعرفة حالة ال serivce . ولكن لا يمكن من خلالها التحكم في طريقة بدء التشغيل من حيث جعلها يدوية Manual او تلقائية Automatic او معطلة Disabled , وهذا يعتبر قصور في هذة الاداة , وسوف نناقش حل هذة المشكلة لاحقا.
للتحكم في خدمة ما يجب اولا ان تقوم بتحديد اسم ال service
كود :
[color=#000000][COLOR=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]ServiceName [/color][color=#007700]= ([/color][color=#dd0000]"Uxsms"[/color][COLOR=#007700])
[/COLOR][/COLOR]
لايقاف ال service
كود :
[color=#000000][COLOR=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]Stop[/color][COLOR=#007700]()
[/COLOR][/COLOR]
لتشغيل ال service
كود :
[color=#000000][COLOR=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]Start[/color][COLOR=#007700]()
[/COLOR][/COLOR]
لايقاف مؤقت
كود :
[color=#000000][COLOR=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]Pause[/color][COLOR=#007700]()
[/COLOR][/COLOR]
لتشغيل ال service بدء ايقاف مؤقت
كود :
[color=#000000][COLOR=#0000bb] ServiceController1[/color][COLOR=#007700].Continue()
[/COLOR][/COLOR]
لمعرفة حالة ال service
كود :
[color=#000000][COLOR=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]Status[/color][COLOR=#007700])
[/COLOR][/COLOR]
لمعرفة هل يمكن ايقاف او تشغيل ال service
كود :
[color=#000000][COLOR=#0000bb] MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]CanStop[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]CanShutdown[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]CanPauseAndContinue[/color][COLOR=#007700])
[/COLOR][/COLOR]
للانتظار عدد من الثواني حتى تصل ال service ال حاله معينة
كود :
[color=#000000][COLOR=#0000bb] ServiceController1[/color][color=#007700].[/color][color=#0000bb]WaitForStatus[/color][color=#007700]([/color][color=#0000bb]ServiceProcess[/color][color=#007700].[/color][color=#0000bb]ServiceControllerStatus[/color][color=#007700].[/color][color=#0000bb]Running[/color][color=#007700], [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]TimeSpan[/color][color=#007700].[/color][color=#0000bb]FromSeconds[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]))
[/COLOR][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]WaitForStatus[/color][color=#007700]([/color][color=#0000bb]ServiceProcess[/color][color=#007700].[/color][color=#0000bb]ServiceControllerStatus[/color][color=#007700].[/color][color=#0000bb]Stopped[/color][color=#007700], [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]TimeSpan[/color][color=#007700].[/color][color=#0000bb]FromSeconds[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]))
[/COLOR][color=#0000bb]ServiceController1[/color][color=#007700].[/color][color=#0000bb]WaitForStatus[/color][color=#007700]([/color][color=#0000bb]ServiceProcess[/color][color=#007700].[/color][color=#0000bb]ServiceControllerStatus[/color][color=#007700].[/color][color=#0000bb]Paused[/color][color=#007700], [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]TimeSpan[/color][color=#007700].[/color][color=#0000bb]FromSeconds[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]))
[/COLOR][/COLOR]
ما هي Service Controller Extended ؟
هي تطوير للاداة التقليدية Service Controller والتي فيها قصور يتمثل في وجود وظيفة يمكننا من خلالها التحكم في طريقة تشغيل الservice , ويمكن من خلالها الحصول على وصف علن service معين.
Service Controller Extended هي اداة مفتوحة المصدر مبنية ب C# باستخدام .NET Framework 3.5
لاستخدام ال Service Controller Extended:
1اضف reference الى ServiceController.dll
كود :
[color=#000000][COLOR=#0000bb]Imports ServiceControllerEx[/color][color=#007700].[/color][COLOR=#0000bb]ServiceControllerEx
Dim ScEx [/COLOR][color=#007700]As New [/color][color=#0000bb]ServiceControllerEx[/color][color=#007700].[/color][COLOR=#0000bb]ServiceControllerEx
ScEx[/COLOR][color=#007700].[/color][color=#0000bb]ServiceName [/color][color=#007700]= ([/color][color=#dd0000]"UXsms"[/color][COLOR=#007700])
[/COLOR][color=#0000bb]ScEx[/color][color=#007700].[/color][color=#0000bb]StartupType [/color][color=#007700]= ([/color][color=#dd0000]"Automatic"[/color][color=#007700]) [/color][COLOR=#dd0000]'To automatic startup type
ScEx.StartupType = ("Manual") '[/COLOR][COLOR=#0000bb]Manual startup type
ScEx[/COLOR][color=#007700].[/color][color=#0000bb]StartupType [/color][color=#007700]= ([/color][color=#dd0000]"Disabled"[/color][COLOR=#007700])
[/COLOR][/COLOR]
رابط التحميل ال Service Controller Ex
http://vb4arb.com/vb/uploaded/18_01349107971.zip
في النهاية ارجو الفائدة و التوفيق للجميع.
اخوكم
Magic Sword