2014-10-06 125 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"來避免這個問題。