exePath是ConfigurationManager.OpenExeConfiguration中的无效异常

时间:2010-07-19 16:43:57

标签: c#

我有一个安装到C:\ Windows \ System32的Windows服务。它有一个通常的.config文件,其中存储了一些应用程序设置。我有另一个应用程序,它将一些值写入此配置。当我运行此应用程序时,它会在此行引发异常

var config = ConfigurationManager.OpenExeConfiguration(serviceExePath);

异常说:加载配置文件时出错:参数'exePath'无效。参数名称:exePath

当我将我的Windows服务放到另一个文件夹时,一切正常!是因为某些访问违规规则还是类似的?有没有办法将System32文件夹用于我的服务并打开其配置?

操作系统:Windows 7 x64

3 个答案:

答案 0 :(得分:6)

对于文件位置来说,这是一个糟糕的选择。该目录属于Windows,不适合您自己的应用程序。首先,您需要管理员权限才能打开该目录中的文件。如果没有清单来触发UAC提示,你就不会得到它。

另一方面,该目录在x64版本的Windows上进行虚拟化。尝试访问文件的32位应用程序将重定向到c:\ windows \ syswow64。

如果您发布了堆栈跟踪,我可能会更准确。但是,就是不要这样做。

答案 1 :(得分:6)

请注意,尽管参数的名称为'exePath',但您应该传入.config文件的名称,因此您可能需要根据serviceExePath文件夹中的内容附加“.config”。

http://msdn.microsoft.com/en-us/library/ms224437.aspx

  

exePath

     

输入:System.String

     

配置文件的路径。配置文件与可执行文件位于同一目录中。

就目前而言,我感觉它正在尝试加载实际的.exe作为配置文件,这无疑解释了为什么它认为它无效:)

答案 2 :(得分:0)