如何:检索服务列表
更新:2007 年 11 月
可以使用 ServiceController 类的 GetServices 方法检索一台特定计算机上的服务列表。GetServices 方法返回计算机的所有可用服务(与设备驱动程序关联的服务除外)的数组。可以使用 GetDevices 方法检索设备驱动程序服务。
对于这两种方法,既可以选择有兴趣检索其信息的特定计算机,也可以不传递任何参数,只检索本地计算机上的服务。
检索服务列表
创建 ServiceController 类型的数组以包含查询结果。
使用下列方式之一,调用 ServiceController 类的适当方法,并将结果设置为数组:
若要从本地计算机检索非设备驱动程序服务,请调用 GetServices 方法,并且不使用任何参数:
Dim services() As System.ServiceProcess.ServiceController services = System.ServiceProcess.ServiceController.GetServices()
System.ServiceProcess.ServiceController[] services; services = System.ServiceProcess.ServiceController.GetServices();
System.ServiceProcess.ServiceController services[]; services = System.ServiceProcess.ServiceController.GetServices();
若要从特定计算机检索非设备驱动程序服务,请调用 GetServices 方法,并将要从中检索信息的计算机指定为一个字符串参数:
Dim services() As System.ServiceProcess.ServiceController services = System.ServiceProcess.ServiceController.GetServices( _ "machinename")
System.ServiceProcess.ServiceController[] services; services = System.ServiceProcess.ServiceController.GetServices( "machinename");
若要从本地计算机检索设备驱动程序服务,请调用 GetDevices 方法,并且不使用任何参数:
Dim services() As System.ServiceProcess.ServiceController services = System.ServiceProcess.ServiceController.GetDevices()
System.ServiceProcess.ServiceController[] services; services = System.ServiceProcess.ServiceController.GetDevices();
若要从特定计算机检索设备驱动程序服务,请调用 GetDevices 方法,并将要从中检索信息的计算机指定为一个字符串参数:
Dim services() As System.ServiceProcess.ServiceController services = System.ServiceProcess.ServiceController.GetDevices( _ "machinename")
System.ServiceProcess.ServiceController[] services; services = System.ServiceProcess.ServiceController.GetDevices( "machinename");
下面的代码演示如何在本地计算机上检索一组服务并在列表框中显示有关每项服务的信息。请注意,GetServices 方法返回 ServiceController 对象的数组。返回的每个 ServiceController 都表示正在查询的计算机上的一项服务:
Sub ListServices() Dim ListBox1 As ListBox Dim services() As System.ServiceProcess.ServiceController Dim i As Integer services = System.ServiceProcess.ServiceController.GetServices() ListBox1.Items.Clear() For i = 0 To services.Length - 1 ListBox1.Items.Add(services(i).ServiceName) Next End Sub
private void ListServices() { ListBox listBox1 = null; System.ServiceProcess.ServiceController[] services; services = System.ServiceProcess.ServiceController.GetServices(); listBox1.Items.Clear(); for (int i = 0; i < services.Length; i++) { listBox1.Items.Add(services[i].ServiceName); } }
此代码示例也可用作 Visual Basic IntelliSense 代码段。在代码段选择器中,它位于“Windows 操作系统”>“Windows 服务”中。有关更多信息,请参见如何:在代码中插入代码段 (Visual Basic)。