Тип запуска службы - 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");
}
}
}