获取作为 windows 服务执行的脚本的安装目录

Getting installation directory for script executed as windows service

我正在使用 python 创建一个 windows 服务,使用 pywin32cx_freeze 来分发它。我非常喜欢 MSI 以允许在用户选择的任何目录中安装程序。我遇到的问题是,当服务管理器安装服务时,进程在工作目录为 %WinDir%\System32 的情况下执行,这会导致问题,因为服务从安装目录中的 ini 文件中获取一些配置信息没有定义的绝对路径。

有没有办法在安装服务时将安装目录传递给我的应用程序?或者是否有更好的方法来获取配置文件而不需要绝对路径定义?

我能够从 Windows 注册表中识别安装目录。安装服务时,可执行文件的路径注册在 windows 注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\