1

(操作系统:Windows 7)

使用 SC.EXE 我创建了一个 Windows 服务。此外,我创建了必要的注册表项来指定应用程序路径(使用关键参数)。

“应用程序”是一个 .BAT 文件,它设置几个环境变量,然后调用 Python 脚本。直接从 CMD 中运行 .BAT 文件时,我会得到正常的所需行为。

使用服务管理器,我可以启动和停止服务(也适用于直接从 CMD 发出的 SC.EXE)。一切正常,没有警告或错误或任何其他可查看的内容(在事件日志中)。

BAT 文件不会被执行。我仔细检查了应用程序路径,再次检查了服务名称。

  • 更正:实际执行 BAT 文件(从 BAT 文件中创建简单的日志文件)。显然,不起作用的是将 python.exe 作为 BAT 文件中的最后一个命令执行。我无法验证 python.exe 生成了什么错误,因为我没有看到任何日志文件、事件日志条目......

BAT文件内容:

@ECHO OFF
REM ==========================================================================
REM    ProcessIntergrationBridge Microsoft Windows Service Shell Script
REM ==========================================================================
SET CONSEQUOR_PIB_HOME=C:\opt\consequor\pib
SET CONSEQUOR_PIB_VERSION_DESIGNATOR=pib_b0100
SET CONSEQUOR_PIB_DATA=C:\var\opt\consequor\pib
SET CONSEQUOR_PIB_LOG=C:\var\opt\consequor\pib\log
SET CONSEQUOR_PIB_LOG_FILE=C:\var\opt\consequor\pib\log\pib.log
SET PYTHONPATH=C:\opt\consequor\pib\%CONSEQUOR_PIB_VERSION_DESIGNATOR%
SET PYTHONHOME=C:\opt\consequor\pib\python-runtime\win
SET PATH=%CONSEQUOR_PIB_HOME%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\bin;%CONSEQUOR_PIB_HOME%\python-runtime\win;CONSEQUOR_PIB_HOME%\python-runtime\win\DLLs;CONSEQUOR_PIB_HOME%\python-runtime\win\libs;CONSEQUOR_PIB_HOME%\python-runtime\win\Lib;%PATH%
SET CMD=%PYTHONHOME%\pythonw.exe %CONSEQUOR_PIB_HOME%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\%CONSEQUOR_PIB_VERSION_DESIGNATOR%\start_pib\pib_run_server.py debug
%CMD%

PIBD 服务注册条目:(哦 Merde Alors - 我还不能发布图片...... - 如果有人想看,我可以通过直接电子邮件发送......)

PIBD 注册表项

PIBD参数设置

感谢您提供有关如何调试、修复、更改它的任何提示 - 您知道。

亲切的问候

弗兰克 - 现在花了几天时间试图了解 Windows 的奥秘。

4

2 回答 2

2

您应该确保您实际cmd.exe使用批处理文件作为参数进行调用,而不仅仅是调用批处理文件。

与此类似的东西:

C:\Windows\System32\cmd.exe /C C:\opt\consequor\pib\yourbatch.bat
于 2013-12-14T17:15:57.963 回答
0

我推荐这种方法:

  1. 以系统用户身份在会话 0 中启动命令提示符
  2. 切换到会话 0(从交互式服务检测对话框或从命令行)以查找命令提示符
  3. 从命令行运行批处理文件,看看它报告了什么错误

但是查看“SET PATH=”行,我发现某些变量没有正确表达(CONSEQUOR_PIB_HOME 和其他变量上缺少前导 %),这可能是问题...

于 2013-12-16T11:08:58.090 回答