我在正常的命令提示符下通过python win_service.py install运行下面的代码,在这里我得到了拒绝访问的错误。
安装服务测试服务
安装服务时出错:访问被拒绝。(5)
当我以管理员身份启动命令提示符时,我能够解决这个问题。
我可以安装服务,但无法启动服务。
已安装服务
启动服务测试服务
错误启动服务:服务没有及时响应启动或控制请求。
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "TestService"
_svc_display_name_ = "Test Service"
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.main()
def main(self):
print "running"
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
错误之处在于,是否有其他方法可以安装服务来解决问题,以及如何以管理员身份动态运行该服务。
我知道这已经很旧了,但我一直在坚持。对我来说,这个特定的问题是通过复制这个文件来解决的-
pywintypes36.dll
来自->;
Python36\Lib\site-packages\pywin32_system32
到->;
Python36\Lib\site-packages\win32
这方面有一篇很好的文章->; https://www.thepythoncorner.com/2018/08/how-to-create-a-windows-service-in-python
如果您使用的是anaconda python,请确保python36.dll位于系统路径中。我花了很长时间才找到。
学分:Can't start Windows service written in Python (win32serviceutil)
您的服务可能因为找不到可执行文件而没有启动。我有一个类似的问题,通过在系统路径中添加一些与pywin32相关的目录来解决。您可以使用
setx
执行此操作:尝试在具有管理员权限的cmd窗口中运行此命令,并调整路径以匹配您自己的python安装。
相关问题 更多 >
编程相关推荐