【问题标题】:Running a Windows service on machine startup在机器启动时运行 Windows 服务
【发布时间】:2011-11-05 13:19:39
【问题描述】:

我有一个用 Python 编写的 Windows 服务。我想在机器启动时自动启动它。

我该怎么做?

class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "Service"
_svc_display_name_ = "Myservice"

def __init__(self,args):
    win32serviceutil.ServiceFramework.__init__(self,args)
    self.hWaitStop = win32event.CreateEvent(None,0,0,None)
    #socket.setdefaulttimeout(60)

def SvcStop(self):
    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
    win32event.SetEvent(self.hWaitStop) 

def SvcDoRun(self):
    servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED,(self._svc_name_,''))
    self.timeout = 120000
    self.main()              #//thread.start_new_thread(main)

def main(self):
        pass

def ctrlHandler(ctrlType):
    return True         

if __name__ == '__main__':
    win32api.SetConsoleCtrlHandler(ctrlHandler, True)
    win32serviceutil.HandleCommandLine(AppServerSvc)

【问题讨论】:

  • 出于好奇,并且由于我没有服务经验 - 上面的代码有什么作用?
  • 我不明白。服务在系统启动时运行。
  • 您的安装程序需要将服务启动类型设置为自动(或者用户可以手动设置)。
  • 将启动类型更改为自动是有效的。问题是从主要部分开始作为威胁。当我在这里进行更改时,问题就解决了。谢谢。
  • 注意:我猜有些服务是在用户登录后启动的,但一些基本的服务是在用户登录之前启动的。例如winlogon。如果我错了,请纠正我。

标签: python windows windows-services


【解决方案1】:

试试任务调度器:

http://support.microsoft.com/kb/308569

【讨论】:

    最近更新 更多