Uruchom / zatrzymaj usługę z ASP. Strona NET

Zaimplementowałem stronę internetową (ASP .NET, VB), aby uruchomić / zatrzymać usługę Windows.

Użyłem personifikacji, jak opisano tutaj:http://support.microsoft.com/kb/306158

Wszystko jest w porządku, gdy strona odczytuje status usługi:

_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

Problem występuje, gdy strona próbuje uruchomić (lub zatrzymać) usługę:

_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

Komentarze:

Wyjątkiem jest „Odmowa dostępu”, ale personifikowany użytkownik jest taki sam, zarówno dla statusu, jak i dla start / stopUżytkownik jest tym samym użytkownikiem, którego zalogowałem na komputerze. I mogę uruchomić / zatrzymać użytkownika z konsoli usług

Dowolny pomysł?

Dodałem element tożsamości w web.config i działa, ale nie chcę, aby cała aplikacja personifikowała użytkownika Administrator (był to tylko test):

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

questionAnswers(2)

yourAnswerToTheQuestion