openservice (advapi32)
Last changed: maxbgn-178.74.224.122

.
Summary
The OpenService function opens an existing service.

C# Signature:

[DllImport("advapi32.dll", EntryPoint = "OpenServiceA", SetLastError = true, CharSet = CharSet.Ansi)]
static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, ServiceRights dwDesiredAccess);

VB Signature:

<DllImport("advapi32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function OpenService(ByVal hSCManager As IntPtr, ByVal lpServiceName As String, ByVal dwDesiredAccess As Int32) As IntPtr
    End Function

VB .NET Signature:

    Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal hSCManager As IntPtr, ByVal lpServiceName As String, ByVal dwDesiredAccess As Integer) As IntPtr

User-Defined Types:

SERVICE_ACCESS

Notes:

Seems the CharSet should be Ansi, not Auto.

Also the code from a sample did not work for me, so I used the following code to open a service:

    IntPtr service = OpenService(scman, ServiceName, ServiceRights.StandardRightsRequired | ServiceRights.Stop | ServiceRights.QueryStatus);
    if (service == IntPtr.Zero)
      throw new Win32Exception(Marshal.GetLastWin32Error());

Tips & Tricks:

Please add some!

Sample Code:

The following sample opens the service with privileges to stop and delete it:

    IntPtr hService = OpenService(hSCM, ServiceName, ((uint)SERVICE_ACCESS.SERVICE_STOP |
                (uint)System.Messaging.StandardAccessRights.Delete));

Alternative Managed API:

Unless you are going use EnumDependentServices API please use 'System.ServiceProcess.ServiceController' that is provided in the framework.

Documentation
OpenService on MSDN