python作为系统服务时获取不了系统变量

Python07

python作为系统服务时获取不了系统变量,第1张

当Python作为系统服务时,可能无法获取系统变量。这是因为服务程序在启动时,并没有像一般程序一样把系统变量加载到内存里,所以Python也无法使用它们。如果要解决此问题,可以尝试在服务启动前显式地加载系统变量,然后才启动Python服务。

楼主怎么又来问这个问题?不是已经问过一遍了吗?这么久还没有搞定?

svcdorun运行结束就表示系统服务“停止”,怎么会重新运行?

上面的程序在开始添加两行代码

import

time

timeout

=

10

#此处是延时时间,单位秒

改写部分代码:

def

__init__(self,

args):

win32serviceutil.serviceframework.__init__(self,

args)

self.running

=

true

def

svcdorun(self):

while

self.running:

#调用你的程序代码或者函数,以下的部分是计时代码

i

=

0

while

self.running

and

(i<timeout):

time.sleep(1)

i

+=

1

def

svcstop(self):

self.running

=

false

这三个函数完全替代原有的代码

代码

import

win32event

可以去除

计时代码之所以不直接写

time.sleep(timeout),主要原因是当timeout比较长时,会引起停止服务时失败,windows系统在停止服务时会有一定的等待时间,但时间不长,现在的计时代码是一秒钟检查一次是否停止,肯定不会带来问题。

示例代码如下,可以参考:

import wmi

class servicePython():

def __init__(self, serviceName):

self.c = wmi.WMI ()

self.serviceName = serviceName

def setServiceName(self, serviceName):

self.serviceName = serviceName

def getStatus(self):

srv = c.Win32_Service (name=self.serviceName)

if srv != []:

return c.Status

return False