17-10-12, 05:53 PM
كاتب الموضوع : Boutemine Oualid
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاتهمن خلال هذه الشفرة يمكننا التحكم في الWindows Services المثبة على الجهاز
الشفرة تستعمل مجال الأسماء System.ServiceProcess
لذلك علينا اضافة مرجع إلى المجمع.
نقطة أخرى، الشفرة تتطلب صلاحيات مدير لذلك علينا اضافة ملف Manifest للمشروع
للمزيد من المعلومات راجعوا درس الأستاذ سامر عن موضوع الصلاحيات على هذا الرابط
http://vb4arb.com/vb/showthread.php?1407...t=Security
كود :
using System;
using System.ServiceProcess;
using System.Windows.Forms;
namespace GestionDesServicesWindows
{
public partial class frmMain : Form
{
private void frmMain_Load(object sender, System.EventArgs e)
{
ReadSvcs();
}
public frmMain()
{
InitializeComponent();
}
private void ReadSvcs()
{
ServiceController[] ListSvcs;
ListViewItem LVW;
ListSvcs = ServiceController.GetServices();
lvwServices.Items.Clear();
foreach (ServiceController SingleSvc in ListSvcs)
{
LVW = lvwServices.Items.Add(SingleSvc.DisplayName);
LVW.SubItems.Add(SingleSvc.ServiceName);
LVW.SubItems.Add(SingleSvc.Status.ToString());
LVW.SubItems.Add(SingleSvc.ServiceType.ToString());
System.Text.StringBuilder dependedServices = new System.Text.StringBuilder(5000,10000);
foreach (ServiceController serviceController in SingleSvc.DependentServices)
{
dependedServices.Append(serviceController.DisplayName);
dependedServices.Append("; ");
}
LVW.SubItems.Add(dependedServices.ToString());
}
}
private void lvwServices_Click(object sender, System.EventArgs e)
{
if (lvwServices.SelectedItems[0].Text != "")
{
switch (lvwServices.SelectedItems[0].SubItems[2].Text)
{
case "Stopped":
cmdStop.Enabled = false;
cmdStart.Enabled = true;
cmdPause.Enabled = false;
break;
case "Running":
cmdStop.Enabled = true;
cmdPause.Enabled = true;
cmdStart.Enabled = false;
break;
default:
cmdStop.Enabled = false;
cmdStart.Enabled = false;
cmdPause.Enabled = false;
break;
}
}
}
private void cmdStop_Click(object sender, System.EventArgs e)
{
if (lvwServices.SelectedItems.Count == 0) return;
if (lvwServices.SelectedItems[0].Text != "")
{
StopService(lvwServices.SelectedItems[0].SubItems[1].Text);
}
}
public void StopService(string ServiceName)
{
ServiceController[] ListSvcs;
ListSvcs = ServiceController.GetServices();
try
{
foreach (ServiceController SingleSvc in ListSvcs)
{
if (SingleSvc.ServiceName.ToUpper() == ServiceName.ToUpper())
{
SingleSvc.Stop();
ReadSvcs();
break;
}
}
}
catch (Exception e)
{
MessageBox.Show("Impossible de stopper le service, il peut etre désactivé.", "Erreur: " + e.Source);
}
}
public void StartService(string serviceName)
{
ServiceController[] ListSvcs;
ListSvcs = ServiceController.GetServices();
try
{
foreach (ServiceController SingleSvc in ListSvcs)
{
if (SingleSvc.ServiceName.ToUpper() == serviceName.ToUpper()) {
SingleSvc.Start();
ReadSvcs();
break;
}
}
}
catch (Exception e) {
MessageBox.Show("The service may be disabled.", "Error: " + e.Source);
}
}
private void cmdStart_Click(object sender, System.EventArgs e)
{
if (lvwServices.SelectedItems.Count == 0) return;
if (lvwServices.SelectedItems[0].Text != "")
{
StartService(lvwServices.SelectedItems[0].SubItems[1].Text);
}
}
private void cmdRefresh_Click(object sender, System.EventArgs e)
{
ReadSvcs();
}
private void cmdPause_Click(object sender, EventArgs e)
{
if (lvwServices.SelectedItems.Count == 0) return;
if (lvwServices.SelectedItems[0].Text != "")
{
PauseService(lvwServices.SelectedItems[0].SubItems[1].Text);
}
}
private void PauseService(string serviceName)
{
ServiceController[] ListSvcs;
ListSvcs = ServiceController.GetServices();
foreach (ServiceController SingleSvc in ListSvcs)
{
if (SingleSvc.ServiceName.ToUpper() == serviceName.ToUpper())
{
if (SingleSvc.CanPauseAndContinue)
SingleSvc.Pause();
else
{
MessageBox.Show("The service doesn't support this operation", "Error");
break;
}
ReadSvcs();
break;
}
}
}
}
}