加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 从ASP启动/停止服务. NET页面

发布时间:2020-12-16 09:52:13 所属栏目:asp.Net 来源:网络整理
导读:我实现了一个网页(ASP .NET,VB)来启动/停止 Windows服务. 我使用了模仿,如下所述:http://support.microsoft.com/kb/306158 当页面读取服务的状态时,一切正常: _domain = Me.TextBoxDomain.Text_user = Me.TextBoxUserName.Text_password = Me.TextBoxPassw
我实现了一个网页(ASP .NET,VB)来启动/停止 Windows服务.

我使用了模仿,如下所述: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,_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中添加了identity元素并且它可以工作,但我不希望整个应用程序冒充管理员用户(这只是一个测试):

<identity impersonate="true" userName="domainuser" password="password"/>

解决方法

这里提出的解决方案 http://support.microsoft.com/kb/306158
说过

Dim LOGON32_LOGON_INTERACTIVE As Integer = 2
Dim LOGON32_PROVIDER_DEFAULT As Integer = 0

If LogonUserA(userName,domain,password,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,token) <> 0 Then
    [...]
End if

它对我不起作用.

我用LOGON32_LOGON_SERVICE替换了LOGON_32_LOGON_INTERACTIVE:

Dim LOGON32_LOGON_INTERACTIVE As Integer = 2
Dim LOGON32_LOGON_NETWORK As Integer = 3
Dim LOGON32_LOGON_BATCH As Integer = 4
Dim LOGON32_LOGON_SERVICE As Integer = 5
Dim LOGON32_LOGON_UNLOCK As Integer = 7
Dim LOGON32_LOGON_NETWORK_CLEARTEXT As Integer = 8
Dim LOGON32_LOGON_NEW_CREDENTIALS As Integer = 9
Dim LOGON32_PROVIDER_DEFAULT As Integer = 0

If LogonUserA(userName,LOGON32_LOGON_SERVICE,token) <> 0 Then
    [...]
End if

它适用于我:ASP .NET页面可以启动/停止服务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读