2015-11-21 7 views
0

Я написал программу на python, которая взаимодействует с сервисом Windows. Однако, прежде чем делать это, мне нужно проверить, установлена ​​ли служба.Проверьте, существует ли служба Windows с Python

Для получения этой услуги я использую следующий код. Но если он не существует, я получаю ошибку.

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') 

Есть ли способ, что я могу проверить это?

ответ

3

Похоже, Try-за исключением блока будет самым простым решением:

try: 
    win32serviceutil.QueryServiceStatus('myservice') 
except: 
    print "Windows service NOT installed" 
else: 
    print "Windows service installed" 
+1

@ECC, Ответ на давмат совершенно изящный и Pythonic, и он отвечает на ваш вопрос, насколько я могу судить. Если вы так не думаете, возможно, вам следует переформулировать свой вопрос, чтобы более точно рассказать о том, что вы ищете. – Petri

4

Это может быть сделано с помощью psutil:

Вот код:

import psutil 

def getService(name): 

     service = None 
     try: 
      service = psutil.win_service_get(name) 
      service = service.as_dict() 
     except Exception as ex: 
      print str(ex) 

     return service 

service = getService('LanmanServer') 

print service 

if service: 

     print "service found" 
else: 

    print "service not found" 


if service and service['status'] == 'running' : 

     print "service is running" 
else : 

     print "service is not running" 
Смежные вопросы