Windows サービスを開始/停止する Web ページ (ASP .NET、VB) を実装しました。
ここで説明されているように、なりすましを使用しました: http://support.microsoft.com/kb/306158
ページがサービスのステータスを読み取るときは、すべて問題ありません。
_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
この問題は、ページがサービスを開始 (または停止) しようとしたときに発生します。
_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
コメント:
- 例外は「アクセスが拒否されました」ですが、ステータスと開始/停止の両方で、偽装されたユーザーは同じです
- ユーザーは、私が PC にログインしたユーザーと同じです。また、サービス コンソールからユーザーを開始/停止できます
何か案が?
web.config に ID 要素を追加しましたが、動作しますが、アプリケーション全体が管理者ユーザーになりすますことは望ましくありません (これは単なるテストでした)。
<identity impersonate="true" userName="domain\user" password="password"/>