Inicie el servicio de Windows mediante programación

Tengo un problema con una aplicación que estoy creando. Estoy tratando de iniciar un servicio de Windows a través de mi aplicación C #. Cuando hago clic en el botón de inicio, parece que todo pasa, pero cuando inicio sesión en el servidor, el servicio aún no muestra que se está ejecutando. Sin embargo, la segunda vez que lo ejecuto, aparece una excepción que dice que la instancia del servicio ya se está ejecutando. Nuevamente cuando inicio sesión en el servidor, el servicio parece estar detenido. ¿Alguien ha visto esto alguna vez?

Aquí está mi código.

try
{
    while (reader.Read())
    {
        int timeoutMilliseconds = 1000;
        string serviceName = reader["ServiceName"].ToString();
        string permission = reader["Permission"].ToString();

        if (permission == "E")
        {
            lblServStartSuccess.Visible = true;

            ServiceController service = new ServiceController(serviceName);
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
        }
        else
        {
            lblServErrorStart.Visible = true;
        }
    }
}
catch (Exception ex)
{
    Response.Write(ex.ToString());
}

EDITAR Aquí está la excepción que recibí en un servicio:

System.InvalidOperationException: el servicio administrativo del administrador del disco lógico del servicio no se encontró en la computadora '.'. ---> System.ComponentModel.Win32Exception: el servicio especificado no existe como un servicio instalado --- Fin de la excepción interna stack trace

Sé que el servicio existe. ¿Necesito agregar algo en frente del servicio para decirle qué servidor mirar?

Respuestas a la pregunta(6)

Su respuesta a la pregunta