7

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

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

如果我在 Windows 8 系统上构建和运行代码,它安装并运行良好,我不会收到错误消息,但是如果我在 Windows 7 上部署 Window 8 编译的应用程序,我会收到关于访问配置文件的相同错误. 两台机器都是 64 位的,但会生成一个 32 位的应用程序。

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

这是在两台不同的机器上,但我在两台机器上都以同一个用户登录到同一个域,并且是管理员。

4

3 回答 3

5

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

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

于 2012-12-06T03:45:01.983 回答
1

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

于 2015-01-01T08:17:21.443 回答
0

通过提升运行我的服务的帐户权限,我在 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在我运行服务的安装程序时选中了 install for 复选框也是如此。

请记住这里的评论:

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

于 2016-11-21T10:27:27.800 回答