如果这是一个愚蠢的问题,请原谅我,我对编写服务还很陌生。我编写了一个运行计时器的服务,计时器代码运行一些检查以确保我们的系统正常运行。它是用VB.Net 框架 1.1编写的。然后我使用“sc create”安装服务。该服务在我正在开发的XP Pro 机器上运行良好。但是,当我在 64 位 Windows 2003 服务器上安装该服务时,该服务失败并显示error 1053
立即地。我在 OnStart 函数的第一行代码中进行了一些调试以写入文本文件,但即使这样也没有运行,因此程序启动时一定有问题。最后,我绝望地在 Visual Studio 2003 的一个新 VB 项目中创建了一个全新的 Windows 服务,并编译了一个空服务,该服务仅在 OnStart 函数中声明和设置字符串变量的值,如下所示:
Dim strTmp As String
strTmp = "hello"
即使在W2K3 服务器上也失败了,但在 XP 开发机器上工作正常。服务器已安装并运行 .Net Framework 1.1,我们在 CMS 中使用它(用 ASP.Net 1.1 编写)。该服务作为本地系统帐户运行。我尝试启用与桌面的交互,但这没有帮助。我运行了进程监视器并且没有拒绝访问事件。我清空了应用程序事件日志,仍然不起作用。日志中没有其他事件可以帮助我。绝对使用应用程序的发布版本。对 exe 文件的权限由系统和管理员完全控制。有什么想法吗?这一定很简单,但如果我能弄清楚,我该死的!提前致谢。
@DavidHi,非常感谢您的建议。我不认为第一点是我的问题,部分原因是 MS 文章是关于停止或暂停服务,我的启动失败;也是因为服务没有超时,没有30秒的等待,立即失败。其次,当您说向服务启动添加异常处理程序时,您是指 OnStart 子吗?我尝试在那里添加一个调试文件写入,但我会尝试添加一个事件日志。关于系统检查,不可能是因为我创建的全新空测试服务显示了相同的行为并且根本没有做任何事情。你最后一点可能是关键。我的开发环境是32bit
. 我会对 corflags 做一些研究,或者我可以构建一个 64 位开发环境。再次感谢您,至少您给了我一些新的思考!
好的,找到了解决方法。我把我的 exe 文件放在System32
. 当我将它放在我自己创建的另一个文件夹中时,服务运行了,尽管时间很短。然后我不得不将 ini 文件和它读取/写入的日志文件也移动到该文件夹,而不是 System32,并且一切似乎都运行良好。天知道为什么它不喜欢从 System32 运行,但至少它现在可以工作了!谢谢你们的帮助。