Iniciar / parar o serviço de um ASP. Página NET

Eu implementei uma página web (ASP .NET, VB) para iniciar / parar um serviço do Windows.

Eu usei a impersonificação, como descrito aqui:http://support.microsoft.com/kb/306158

Tudo está ok quando a página lê o status do serviço:

_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

O problema ocorre quando a página tenta iniciar (ou interromper) o serviço:

_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

Comentários:

A exceção é "Acesso negado", mas o usuário representado é o mesmo, tanto para o status quanto para o início / paradaO usuário é o mesmo usuário que eu registrei no PC. E eu posso iniciar / parar o usuário no console de serviço

Qualquer ideia?

Eu adicionei o elemento de identidade no web.config e ele funciona, mas não quero que o aplicativo inteiro represente o usuário Administrador (foi apenas um teste):

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

questionAnswers(2)

yourAnswerToTheQuestion