2011-12-29 60 views
8

我創建了一個Windows服務來啓動一個.py腳本。在Windows中啓動python .py作爲服務

sc create "Maraschino" binPath= "C:\HTPC\Maraschino\maraschino-cherrypy.py" DisplayName= "Maraschino" depend= "Tcpip" 

然後我添加註冊表項以鏈接的.py使用python.exe

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Maraschino\Parameters] 
"AppDirectory"="C:\\Python27" 
"Application"="C:\\Python27\\python.exe C:\\HTPC\\Maraschino\\maraschino-cherrypy.py" 

但是打開,當我嘗試啓動服務,我得到它的時候一派錯誤193個0xc1透露,這不是一個有效的exe,我試圖開始。我知道它不是一個.exe,但一個.py和鏈接它打開與python.exe應該解決這個問題,但我犯了一個錯誤。沒有人有任何深入瞭解什麼,我可能是做錯了鏈接腳本使用python.exe

感謝

+0

嘗試調用.pyc文件文件,而不是已經分配。 – Marcom 2011-12-29 10:10:06

+0

@Marcom謝謝,但那不行。它的一個應用程序,所以它已全部編譯並運行它maraschino-cherrypy.py工程時雙擊只是不通過服務 – 2011-12-29 10:16:59

+0

所有這些都是重複的:http://stackoverflow.com/search?q=python+windows+service – 2011-12-29 14:21:25

回答

17

爲此,您可以使用SRVANY.EXE,這是Microsoft提供的工具專用於這種任務的。

首先,下載並安裝Windows Resource Kit。 注意:您只需要srvany.exe,它適用於所有版本的Windows。

。假定Windows資源工具包安裝在C:\ Program Files文件\ Windows資源工具包\運行:

sc create "[YourService]" binPath= "C:\Program Files\Windows Resource Kits\srvany.exe" 

現在,運行註冊表編輯器

在註冊表編輯器對話框中選擇 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > [YourService]

使用[YourService]選擇,打從工具欄編輯>新建>項。

類型參數並按回車。

從工具欄中選擇編輯>新建>字符串值。

類型應用程序並擊中輸入。

右鍵單擊應用程序,然後選擇修改。

C:\Python27\python.exe C:\[YourServicePath].py 

點擊確定按鈕。

和繁榮!你有一個很好的新服務。

+0

好吧,謝謝,我希望能逃脫沒有安裝任何東西,但這將工作。謝謝 – 2011-12-29 14:41:48

+0

你實際上並不需要安裝任何東西!只需獲取srvany.exe(安裝一次並抓取它,或谷歌它)。 把它放到你的腳本文件夾中並設置binPath。 這就是我們在生產環境中所做的。 – Ohad 2011-12-29 18:05:47

+0

srvany.exe - 對於沒有Windows資源工具包的新PC如何安裝? – YumYumYum 2014-07-17 11:43:05

0

我不知道該怎麼SC工作的時候,但我認爲必須有某種方式來傳遞參數到二進制文件,所以你可以嘗試註冊「C:\ Python27 \ python.exe C:\ HTPC \ Maraschino \ maraschino-cherrypy.py」。

您也可以嘗試py2exe :)

0

@Ohad的更新。首先SRVANY.EXE的將被部署到所有的機器

第1步:

  • 下載並安裝Windows資源工具包。
  • 在我的包裝箱中找到了哪個:C:\ Program Files(x86)\ Windows Resource Kits \ Tools \ srvany.exe。
  • 然後打開命令提示符,然後打

    SC打造 「[YourService]」 binPath = 「C:\ Program Files文件(x86)的\ Windows資源工具包\工具\ SRVANY.EXE」 開始=自動顯示名稱=「[ YourService監視器]」

    [SC] CreateService函數成功

第2步:可通過以下內容並雙擊一個file.reg它

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[YourService]\Parameters] 
"Application"="C:\\[YourService Executable].exe" 

第3步:現在啓動服務,它會執行什麼,無論你在file.reg

完成