检查 Windows 服务是否存在 Python
Check if a Windows Service exists with Python
我在 python 中编写了一个与 Windows 服务交互的程序。但是,在这样做之前,我需要检查是否安装了该服务。
我正在使用以下代码获取服务。但如果它不存在,我会收到错误消息。
win32serviceutil.QueryServiceStatus('myservice')
这是错误:
Traceback (most recent call last):
File "win32serviceutil.pyc", line 835, in SvcRun
File "main.py", line 54, in SvcDoRun
File "main.py", line 103, in main
File "main.py", line 57, in start_service
File "main.pyc", line 495, in QueryServiceStatus
File "main.pyc", line 80, in SmartOpenService
error: (1060, 'GetServiceKeyName', 'The specified service does not exist as an installed service')
有什么方法可以查看吗?
似乎 Try-Except 块是最简单的解决方案:
try:
win32serviceutil.QueryServiceStatus('myservice')
except:
print "Windows service NOT installed"
else:
print "Windows service installed"
可以使用 psutil
4.2.0 or newer 来完成:
代码如下:
from __future__ import print_function
import psutil
def get_service(name):
service = None
try:
service = psutil.win_service_get(name)
service = service.as_dict()
except Exception as ex:
# raise psutil.NoSuchProcess if no service with such name exists
print(str(ex))
return service
service = get_service('LanmanServer')
if service:
print("Service found: ", service)
else:
print("Service not found")
if service and service['status'] == 'running':
print("Service is running")
else:
print("Service is not running")
我在 python 中编写了一个与 Windows 服务交互的程序。但是,在这样做之前,我需要检查是否安装了该服务。
我正在使用以下代码获取服务。但如果它不存在,我会收到错误消息。
win32serviceutil.QueryServiceStatus('myservice')
这是错误:
Traceback (most recent call last):
File "win32serviceutil.pyc", line 835, in SvcRun
File "main.py", line 54, in SvcDoRun
File "main.py", line 103, in main
File "main.py", line 57, in start_service
File "main.pyc", line 495, in QueryServiceStatus
File "main.pyc", line 80, in SmartOpenService
error: (1060, 'GetServiceKeyName', 'The specified service does not exist as an installed service')
有什么方法可以查看吗?
似乎 Try-Except 块是最简单的解决方案:
try:
win32serviceutil.QueryServiceStatus('myservice')
except:
print "Windows service NOT installed"
else:
print "Windows service installed"
可以使用 psutil
4.2.0 or newer 来完成:
代码如下:
from __future__ import print_function
import psutil
def get_service(name):
service = None
try:
service = psutil.win_service_get(name)
service = service.as_dict()
except Exception as ex:
# raise psutil.NoSuchProcess if no service with such name exists
print(str(ex))
return service
service = get_service('LanmanServer')
if service:
print("Service found: ", service)
else:
print("Service not found")
if service and service['status'] == 'running':
print("Service is running")
else:
print("Service is not running")