Iniciar / detener el servicio desde un ASP. Página NET

Implementé una página web (ASP .NET, VB) para iniciar / detener un servicio de Windows.

Usé la personificación, como se describe aquí:http://support.microsoft.com/kb/306158

Todo está bien cuando la página lee el estado del servicio:

_domain = Me.TextBoxDomain.Text
_user = Me.TextBoxUserName.Text
_password = Me.TextBoxPassword.Text
_s = New ServiceController(Constant.ServiceName)
If impersonateValidUser(_user, _domain, _password) Then
    Me.LabelServerStatusValue.Text = _s.Status.ToString    
    undoImpersonation()
Else
    'Error
End If

El problema se produce cuando la página intenta iniciar (o detener) el servicio:

_domain = Me.TextBoxDomain.Text
_user = Me.TextBoxUserName.Text
_password = Me.TextBoxPassword.Text
_s = New ServiceController(Constant.ServiceName)
If impersonateValidUser(_user, _domain, _password) Then
    If _s.Status = ServiceControllerStatus.Stopped And _s.Status <> ServiceControllerStatus.StartPending Then
        _s.Start()
        _s.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(5))
    End If
    undoImpersonation()
Else
    'Error
End If

Comentarios:

La excepción es "Acceso denegado", pero el usuario suplantado es el mismo, tanto para el estado como para el inicio / paradaEl usuario es el mismo usuario que inicié sesión en la PC. Y puedo iniciar / detener el usuario desde la consola de servicio

¿Alguna idea?

Agregué el elemento de identidad en web.config y funciona, pero no quiero que toda la aplicación se haga pasar por el usuario Administrador (solo fue una prueba):

<identity impersonate="true" userName="domain\user" password="password"/>

Respuestas a la pregunta(2)

Su respuesta a la pregunta