我有一个在 Windows 7 上运行的 CSharp Windows 服务。它从一个用于设备管理的框架中实例化一个 dll。此 dll 有一些设置存储在名为“pm.config”的 app.config 中。
我将所有程序集和 pm.config 文件复制到 winsvc 项目文件夹同一级别的名为“bin”的文件夹中。
我添加了对 dll 框架的引用并编译了项目。pm.config 文件存在于“bin\debug”和“bin\release”子文件夹中。我使用 installutil 安装了 winsvc 并启动了 winsvc。一切都很好,除了当 winsvc 从框架 dll 调用“Initialize”方法时,此方法尝试打开 pm.config 文件并生成以下异常:
InnerException = {"The machine.config file 'pm.config' was not found.\r\nParameter name: machineConfigFilename"}
我使用检查了程序集位置Assembly.GetExecutingAssembly().Location
,它指向了 winsvc 项目的正确文件夹,我的意思是“mysvcproject\bin\debug”文件夹。
我很确定这与winsvc的安全上下文有关,但我不知道。我正在使用 LocalService 帐户来启动 winsvc,而 'bin\debug' 没有此帐户的权限。相反,我完全控制了此文件夹上的所有人帐户,但仍然出现错误。
我完全迷路了,有人可以帮助我吗?
提前致谢