10

我正在编写一个 python win32 服务,下面是我编译它工作的服务时的代码片段,但我需要转到 services.msc 并手动启动它。

当我通过以下方式安装服务时是否有一个选项:myservice.exe install 它会自动启动?

以下是我的代码片段:

import win32serviceutil
import win32service
import win32event

class SmallestPythonService(win32serviceutil.ServiceFramework):
   _svc_name_ = "ser_name"
   _svc_display_name_ = "ser_descryption"
   #_svc_description_='ddd'
   def __init__(self, args):

      win32serviceutil.ServiceFramework.__init__(self, args)
                    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)

    def SvcStop(self):

       self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
       win32event.SetEvent(self.hWaitStop)

   def SvcDoRun(self):

       win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)

if __name__=='__main__':

    win32serviceutil.HandleCommandLine(SmallestPythonService)
4

4 回答 4

15

用于myservice.exe --startup=auto install安装服务并将其设置为自动启动。

于 2014-10-01T21:27:13.020 回答
2

我会看看这个ActiveState recipe。它是 win32serviceutil 的包装器,展示了如何自动启动服务。

于 2010-12-27T16:34:36.000 回答
1

您可以使用sc.execreate命令。

sc create MyPyService binPath= "C:\myservice.exe" DisplayName= "Some Python Service"

Microsoft KB251192中的更多信息。

win32serviceutil还有一个InstallService()你可以使用的功能。

于 2010-12-27T13:22:32.280 回答
-1

@Maciejg 对我不起作用,这里是自动启动我的使用 py2exe 构建的服务的解决方案:

myservice.exe -auto -install
于 2016-03-03T11:00:44.893 回答