2014-10-06 62 views
0

我有以下批处理脚本:Windows服务输出写入到文件

echo %time% >> C:\file.txt 
C:\MyProgram\program.exe /arg1 >> C:\file.txt 
echo ------- >> C:\file.txt 

我创建了一个服务,

sc create ProgramRun type= own start= auto binPath= "cmd /c cd /d c:\MyProgram\ && start script.bat" 

重新启动后,在file.txt我已经印刷了正确的时间,但没有我的程序输出。在那个程序中,我有一些简单的printf

我能做什么来将输出写入文件而无需编辑程序?

+1

我想你的程序根本就没有执行,因为批处理文件是作为服务执行的。如果程序的路径在任何地方都有空格,请使用'“C:\ MyProgram \ program.exe”。或者你的程序将消息写入'stderr'而不是'stdout',因此你需要额外的'2 >> C:\ file.txt'。为什么你不直接启动批处理文件而不是'cmd/c cd/d c:\ MyProgram \ && start script.bat'? – Mofi 2014-10-06 16:00:20

回答

1

作为Windows服务,您的程序正在本地系统帐户的上下文中运行,该帐户可能没有正确启动和运行程序所需的权限。尝试编辑服务并将setting the Log On credentials添加到您知道可以正确执行程序的Windows帐户。

另外,尽管Windows服务控制管理器(SCM)会高兴地启动您的批处理文件,但报告的结果始终会失败,具体为“错误1053:服务未及时响应启动或控制请求时尚“。这是因为你的批处理文件无法与SCM通信!看看微软的免费(和基本的)Srvany "service wrapper"来避免这个问题。