获取windows服务所在路径(注册表)

584 阅读1分钟

直接代码上:


#coding=utf8
import winreg

class Win32Environment:
    """Utility class to get/set windows environment variable"""
    def __init__(self, scope,name):
        self.scope = scope
        if scope == 'user':
            self.root = winreg.HKEY_CURRENT_USER
            self.service_subkey = 'Services'
            self.process_subkey = 'Software\\Classes'
        else:
            self.root = winreg.HKEY_LOCAL_MACHINE
            self.service_subkey = 'SYSTEM\\CurrentControlSet\\Services\\'+name
            self.process_subkey = 'Software'
    
    def get_service_path(self, name):
        key = winreg.OpenKey(self.root, self.service_subkey, 0, winreg.KEY_READ)
        try:
            value, _ = winreg.QueryValueEx(key, name)
        except Exception as e:
            return e
        return value   
if __name__ == '__main__': 
    try:
        win=Win32Environment(scope="system",name='DutyService')
        a=win.get_service_path('ImagePath')
        if not a:
            win=Win32Environment(scope="user",name='DutyService')
            a=win.get_service_path('ImagePath')
        print(a)        
    except Exception as e:
        print(e)