在Windows上,你可以通过注册表查找服务对应的可执行文件路径。服务的配置信息通常存储在注册表中。

import winreg

def get_service_exe_path(service_name):
    try:
        # 打开服务管理器的注册表键
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SYSTEM\CurrentControlSet\Services")

        # 获取服务的子键列表
        subkeys = []
        index = 0
        while True:
            try:
                subkey = winreg.EnumKey(key, index)
                subkeys.append(subkey)
                index += 1
            except OSError:
                break

        # 查找指定服务的子键
        if service_name in subkeys:
            service_key_path = rf"SYSTEM\CurrentControlSet\Services\{service_name}"
            service_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, service_key_path)

            # 读取 ImagePath 的值,即可执行文件路径
            exe_path, _ = winreg.QueryValueEx(service_key, "ImagePath")

            return exe_path

    except Exception as e:
        print(f"Error: {e}")
    finally:
        winreg.CloseKey(key)

    return None

# 使用示例
service_name = "YourServiceName"
exe_path = get_service_exe_path(service_name)
if exe_path:
    print(f"The executable path for service {service_name} is: {exe_path}")
else:
    print(f"Could not find executable path for service {service_name}")

11-27 17:46