Тип запуска службы - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, может кто объяснить почему код:
ServiceController[] sc = ServiceController.GetServices();
for (int i = 0; i < sc.Length; i++)
{ if (sc[i].Status.Equals(ServiceControllerStatus.Running))
  {
    ListViewItem item = new ListViewItem();
     item.Text = sc[i].ServiceName;
     item.SubItems.Add(sc[i].DisplayName);
     listView2.Items.Add(item);
   }
}
работает нормально, т.е. он выводит службы которые сейчас запущены, но если я хочу вывести службы которые запускаются автоматически
ServiceController[] sc = ServiceController.GetServices();
for (int i = 0; i < sc.Length; i++)
{ if (sc[i].Status.Equals(ServiceStartMode.Automatic))
  {
    ListViewItem item = new ListViewItem();
     item.Text = sc[i].ServiceName;
     item.SubItems.Add(sc[i].DisplayName);
     listView2.Items.Add(item);
   }
}
то ничего не выводится, почему и как исправить.

Решение задачи: «Тип запуска службы»

textual
Листинг программы
        ArrayList arrServices = new ArrayList();
 
        private void Form1_Load(object sender, EventArgs e)
        {
            // Create a new ManagementClass object binded to the Win32_Service WMI class
            ManagementClass mcServices = new ManagementClass("Win32_Service");
 
            // Loop through each service
            foreach (ManagementObject moService in mcServices.GetInstances())
            {
                // Create a new array that holds the ListBox item ID and service name
                string[] srvArray = new string[2];
                srvArray[0] = lstServices.Items.Add(moService.GetPropertyValue("Caption").ToString()).ToString();
                srvArray[1] = moService.GetPropertyValue("Name").ToString();
                // Store the array in the ArrayList
                arrServices.Add(srvArray);
            }
        }
 
        private void lstServices_SelectedIndexChanged(object sender, EventArgs e)
        {
            ManagementClass mcServices = new ManagementClass("Win32_Service");
            // Loop through each service
            foreach (ManagementObject moService in mcServices.GetInstances())
            {
                // Get back the array with the index of the selected ListBox item from the ArrayList
                string[] srvArray = (string[])arrServices[lstServices.SelectedIndex];
                // If the current service name
                if (moService.GetPropertyValue("Name").ToString() == srvArray[1])
                {
                    // Set the fields accordingly
                    txtDesc.Text = moService.GetPropertyValue("Description").ToString();
                    lblPath.Text = "Path: " + moService.GetPropertyValue("PathName");
                    lblType.Text = "Type: " + moService.GetPropertyValue("ServiceType");
                    lblState.Text = "State:  " + moService.GetPropertyValue("State");
                    lblStartup.Text = "Start-up Type:  " + moService.GetPropertyValue("StartMode");
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы