我正在尝试使用Python(3.4)安装Windows服务。安装后我打算运行它。除了演示在Windows中运行的服务之外,它不执行任何其他功能。
我在安装服务时获得以下访问权限:
我是计算机的管理员,因此我应该有权这样做。
也许是因为命令行正在尝试使用Python安装服务。 Python是否有权通过命令行执行此操作?
我怎样才能解决这个问题。是否有需要更改权限的特定文件?
我已经包含了服务中的代码以防万一。
感谢您的帮助。
#Run a Windows Service
import win32serviceutil
import win32service
import win32event
import os
import sys
import time
from threading import Thread
import http.server
class ServiceLauncher(win32serviceutil.ServiceFramework):
_svc_name_ = "PythonService"
_svc_display_name_ = "Python based win32 service"
_svc_description_ = ""
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):
thread = Thread(target = httpserver.run_httpserver)
thread.daemon = True
thread.start()
while (1):
rc = win32event.WaitForSingleObject(self.hWaitStop, 1000)
if rc==win32event.WAIT_OBJECT_0:
# Stop event
break
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(ServiceLauncher)
答案 0 :(得分:1)
解决方案涉及以管理员身份运行命令行。通过右键单击命令提示符并选择以管理员身份运行命令行来执行此操作。
在Windows中,登录计算机的用户可能是Windows管理员,但权限不会自动扩展到命令行。具有管理员权限的用户必须选择以管理员身份运行命令行,以便执行为管理员保留的命令,例如执行Windows服务的安装。