首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows无法在Win Server 2008 R2 SP1上启动服务(错误1053)

Windows无法在Win Server 2008 R2 SP1上启动服务(错误1053)
EN

Stack Overflow用户
提问于 2013-01-02 11:16:23
回答 5查看 49.7K关注 0票数 13

这个问题似乎得到了广泛的讨论,但在我的具体情况下,我在找到解决办法方面有问题。

我的服务被设置为在Local System帐户下运行。在我的第一台安装了Windows7 SP1 (64位)的机器上,一切正常工作。但是,就在我尝试用Windows 2008 R2 SP1 (64位)在我的第二台计算机上启动服务之后,甚至连一次都没有,而且我面临着这个恼人的错误:

代码语言:javascript
运行
复制
Windows could not start the ProService service on Local Computer
Error 1053: The service did not respond to the start or control request in a timely fashion

System Log显示了两个条目:

代码语言:javascript
运行
复制
The ProService service failed to start due to the following error: 
The service did not respond to the start or control request in a timely fashion.

以及:

代码语言:javascript
运行
复制
A timeout was reached (30000 milliseconds) while waiting for the ProService service to connect.

执行情况如下:

Program.cs:

代码语言:javascript
运行
复制
static void Main()
{
    AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
    ServiceBase.Run(new ServiceBase[] { new ProService() });
}

static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    if (e != null && e.ExceptionObject != null)
    {
        Logger.Record(e.ExceptionObject);
    }            
}

ProService.cs:

代码语言:javascript
运行
复制
public ProService()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    try
    {
        RequestAdditionalTime(10000);
        FireStarter.Instance.Execute();
    }
    catch (Exception e)
    {
        Logger.Record(e);
        throw;
    }            
}

OnStart方法刚刚启动一个新线程,因此它几乎不需要时间加载即可执行。为了以防万一,我使用了RequestAdditionalTime语句--拒绝将这件事作为我问题的根源。此外,正如您可以看到的,我正在处理所有的异常,但在启动期间没有异常写入我的自定义服务事件日志(顺便说一句:日志记录在第一台win7机器上运行)。怎么调查到底发生了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-04 09:08:44

我已经弄清楚了几个步骤发生了什么:

  1. 我编写了控制台应用程序包装器,主要用于服务中的OnStart方法。
  2. 我已经执行了控制台应用程序-应用程序正常启动。
  3. 我已经将服务配置文件的内容复制到控制台应用程序配置文件中。
  4. 我再次执行了控制台应用程序--应用程序立即悄然中止(令人惊讶的是,类似于我们的服务行为,出了问题)。
  5. 我比较了两个信任-从服务,和原来的控制台应用程序。因此,我发现了一些不同之处。除其他外,有这样一个条目-问题的根源(移除后,一切正常):

所以基本上我有过时的配置文件。以前,服务是在.NET 4.5下编译的,然后我将框架更改为4.0,并将文件部署到服务器,但保留了以前的配置文件(我更改了目标框架,因为我的开发机器有.NET 4.5,而服务器没有)。我不会想到,如果没有任何合理的信息,显示的线条会隐藏所有的问题,这可能有助于跟踪混乱。

票数 10
EN

Stack Overflow用户

发布于 2013-01-02 14:53:44

检查缺少的依赖项/DLL。

如果您还没有这样做,允许将您的服务作为常规应用程序调用(这是一种用于长期调试的很好的技术),并查看它是否在您的Windows 2008机器上正确启动。

如果以这种方式工作,那么在LocalSystem帐户中运行可能会出现问题。接下来从运行在LocalSystem帐户(这里的示例设置)中的命令提示符启动应用程序。

票数 2
EN

Stack Overflow用户

发布于 2013-10-31 15:08:41

我尝试了以下修复,它是在这个链接中提供的

  1. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定”。
  2. 定位,然后单击以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  3. 在右侧窗格中,找到ServicesPipeTimeout条目。 注如果ServicesPipeTimeout条目不存在,则必须创建它。要做到这一点,请执行以下步骤: a.在“编辑”菜单上,指向“新建”,然后单击“DWORD值”。 键入ServicesPipeTimeout,然后按ENTER键。
  4. 右键单击ServicesPipeTimeout,然后单击“修改”。
  5. 单击“十进制”,键入60000,然后单击“确定”。 此值表示服务超时前的时间(毫秒)。
  6. 重新启动电脑。

但我还是有问题要开始服务。

对我起作用的方法是,

  1. 去吧,services.msc
  2. 双击要启动的服务。
  3. 拿着登录标签
  4. 更改登录为:到本地系统帐户。
  5. 在此更改后尝试启动服务。(仍然给出了1053错误)
  6. 再次获取“登录”选项卡,将其更改为“网络服务”(提供随机的新密码)
  7. 再次尝试启动服务。(服务启动得很好)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14121079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档