加载configuration文件时发生错误:访问pathc:\ Program Files(x86)\ …被拒绝

我有一个应用程序,我使用Windows 7上的Visual Studio 2010中的安装程序进行部署。该程序在Windows 7和XP上部署和运行良好,但是当我在Windows 8系统上部署时,出现有关访问configuration文件的错误。

该程序安装在c:\ Program Files文件(x86)[公司名称] [应用程序名称] \中,被引用的文件是一个名称与Windows GetTempFile生成机器相似的临时文件,例如x4q0toqw.tmp。 它不存在于这个文件夹,然后有一个引用的execonfiguration文件(myapp.exe.config,它确实存在)

如果我在Windows 8系统上构build并运行代码,它安装并运行良好,我不会得到这个错误,但是如果我在Windows 7上部署Windows 8编译的应用程序,则会出现与访问configuration文件相同的错误。 这两台机器都是64位的,但生成一个32位的应用程序。

我不打算发布两个二进制文件。 谁能告诉我发生了什么事? 我正在尝试设置JITdebugging的过程中,我可以附加到EXE,当它抛出exception,因为debugging它本身并不能帮助我,因为我没有得到例外。

谢谢,

加里

这是在两个不同的机器上,但我login到相同的用户在同一个域,都是pipe理员。

也许你的应用程序是在加载过程中重写你的应用程序配置,这将导致系统质疑访问授权…如果是这样,可能是你可以改变你的应用程序(安装的)的属性有管理员权限..这会让你的应用程序自动有权编程编辑应用程序的配置。

或者…你可以忘记应用程序配置重写,并把所有的东西在默认的应用程序配置脚本。 但这会暴露您的应用程序数据库安全性…

我有同样的错误。 这是因为临时文件是在C:\Program Files (x86)\[Company Name]\[App Name]文件夹中创建的,而普通用户(PC名称\用户)没有修改该文件夹的权限。 一旦我添加修改权限,它开始工作正常。

我在Win 7上通过提升我的服务所运行的帐户权限解决了Visual Studio 2010中非常类似的问题。 请参阅第9步:

Account属性设置为LocalSystem.

当我的serviceProcessInstaller1运行在LocalService帐户下时,我得到了一个类似于你的错误。 但是将帐户更改为LocalSystem解决了这个问题。 然后,我已安装的服务可以写入其C:\Program Files (x86)\[Company Name]\[App Name]\[App Name].exe.Config文件。 当我运行服务的安装程序时,即使安装了Just me复选框。

请记住这里的评论:

LocalSystem值定义了高权限的帐户,但大多数服务不需要这样提升的权限级别。