加载配置文件时出错:访问路径c:\ Program Files(x86)\ ...被拒绝

时间:2012-11-12 13:50:09

标签: c# windows file config denied

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

程序安装在c:\ Program Files(x86)[公司名称] [App Name] \中,被引用的文件是一个临时文件,其名称看起来像Windows GetTempFile生成的机器,例如: x4q0toqw.tmp。这个文件夹中不存在,然后有一个exe配置文件的引用(myapp.exe.config,确实存在)

如果我在Windows 8系统上构建并运行代码,它安装并运行正常,我没有收到错误,但是如果我在Windows 7上部署Window 8编译的应用程序,我会得到相同的访问错误配置文件。两台机器都是64位,但生成32位应用程序。

我不打算发布两个二进制文件。谁能告诉我发生了什么事?我正在尝试设置JIT调试,以便在抛出异常时可以附加到exe,因为本机调试对我没有帮助,因为我没有例外。

谢谢,

加里

这是在两台不同的计算机上,但我在两者上都登录了同一个域,并且是管理员。

3 个答案:

答案 0 :(得分:4)

也许您的应用程序在加载期间重写您的应用程序配置,这将导致系统对访问授权提出质疑...如果是这样,您可以更改应用程序的属性(已安装的应用程序)以拥有管理员权限...这将使您的应用程序自动有权以编程方式编辑应用程序配置。

或者......您可以忘记应用程序配置重写并将所有内容放入默认的应用程序配置脚本中。但这将暴露您的应用程序数据库安全性......

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我通过提升运行我的服务的帐户权限,在Win 7上解决了Visual Studio 2010中一个非常类似的问题。请参见步骤9 here

  

Account属性设置为LocalSystem.

当我的serviceProcessInstaller1LocalService帐户下运行时,我收到了与您相同的错误消息。但是将帐户更改为LocalSystem可解决此问题。然后,我安装的服务可以写入其C:\Program Files (x86)\[Company Name]\[App Name]\[App Name].exe.Config文件。即使在运行服务的安装程序时检查了Just me复选框的安装,也是如此。

请记住here的评论:

  

LocalSystem值定义了一个具有高权限的帐户,但大多数都是   服务不需要这种提升的特权级别。