【问题标题】:Windows Service will not start as Local UserWindows 服务不会以本地用户身份启动
【发布时间】:2013-04-18 22:02:41
【问题描述】:

编辑 2: 我现在认为这是我尝试运行该服务的机器的问题。我尝试将服务移动到设置类似的另一台机器上,即使作为本地用户,该服务也能够成功启动。现在我只需要弄清楚这两台机器有什么不同...


我有一个 Windows 服务项目(用 VB.net 编写),该项目已安装并配置为自动启动类型,并将登录身份设置为本地用户帐户。此服务将在计算机首次启动时启动。但是,如果我停止服务并尝试再次启动它,我会收到“错误 1053:服务没有及时响应启动或控制请求”。立即地。但是,如果我将登录身份更改为“本地系统帐户”,则该服务将启动。

总结:

  • 计算机首次启动时服务将以本地用户身份运行
  • 如果手动启动,服务将不会以本地用户身份运行
  • 计算机首次启动时服务将作为本地系统运行
  • 如果手动启动,服务将作为本地系统运行

我读到错误 1053 是由 OnStart 方法返回不够快引起的。该服务之前已启动,并且我立即收到错误消息这一事实使我相信超时不是正在发生的事情。为了验证这一点,我创建了一个全新的 Windows 服务项目,并且没有更改我构建和安装的任何内容。我得到了同样的行为。

我不知道发生了什么。据我所知,本地用户拥有运行服务的所有正确权限(这一点可以从计算机首次启动时使用这些凭据启动这一事实明显看出),并且 OnStart 方法不是t 实际上超时(完全空白的哑服务表现出相同的行为就可以看出这一点)。

关于是什么阻止了服务启动,或者我可以在哪里寻找更好的错误消息(我查看了应用程序事件日志,但那里没有任何显示)有什么想法吗?

编辑: 这是我创建的哑服务的代码(使用来自 here 的 EventLogger 作为模块)。

Protected Overrides Sub OnStart(ByVal args() As String)
    ' Add code here to start your service. This method should set things
    ' in motion so your service can do its work.
    EventLogger.WriteToEventLog("On Start")
End Sub

Protected Overrides Sub OnStop()
    ' Add code here to perform any tear-down necessary to stop your service.
    EventLogger.WriteToEventLog("On Stop")
End Sub

和同一个项目的Main方法。

' The main entry point for the process
<MTAThread()> _
<System.Diagnostics.DebuggerNonUserCode()> _
Shared Sub Main()
    EventLogger.WriteToEventLog("Starting Main Method")
    Dim ServicesToRun() As System.ServiceProcess.ServiceBase

    ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1}

    System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    EventLogger.WriteToEventLog("Leaving Main Method")
End Sub

当我尝试以本地用户身份运行服务时,事件日志中没有显示任何消息,并且我收到错误 1053。当我作为本地系统运行服务时,事件日志中显示消息。

我需要以本地用户身份运行实际服务的原因是它可以访问网络共享。我目前正在研究使用 Windows 用户模拟,但我仍然认为我应该能够以本地用户身份启动一个简单的服务。

【问题讨论】:

    标签: vb.net windows-services


    【解决方案1】:

    使用this resource 创建事件记录器。然后将您的代码包装在 try/catch b/c 中的每个子中,这很可能在您的 OnStart 子中发生了阻止服务启动的事情。发布您的 onstart、onstop 和/或您的服务主要子系统的一些示例代码,并阐明为什么您需要使用本地用户与本地系统。

    【讨论】:

    • 原程序在OnStart方法中创建并启动了一个FileSystemWatcher。但是,我在完全空白的 Windows 服务项目中也得到了相同的行为。我不认为它涉及 OnStart 方法,但我将添加事件记录器调用并更新我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    相关资源
    最近更新 更多