C# 创建无管理员权限的用户可以修改的配置文件的正确方法是什么?

C# 创建无管理员权限的用户可以修改的配置文件的正确方法是什么?,c#,configuration,installation,app-config,uac,C#,Configuration,Installation,App Config,Uac,我的C#程序有一个app.exe.config文件。用户可以在任何地方安装该程序。如果用户选择在“program Files”文件夹中安装该程序,则该程序在修改Windows 7中的文件时会遇到权限问题,因此我已将可修改的文件外部化到AppData文件夹中。除app.exe.config文件外,当用户更改其设置时,该文件也应可由程序修改。显然,它应该与app.exe位于同一文件夹中 我认为这是一个相当琐碎的问题,但是我找不到正确的解决方案 将配置文件复制到别处,对其进行修改并复制回程序文件 在

我的C#程序有一个app.exe.config文件。用户可以在任何地方安装该程序。如果用户选择在“program Files”文件夹中安装该程序,则该程序在修改Windows 7中的文件时会遇到权限问题,因此我已将可修改的文件外部化到AppData文件夹中。除app.exe.config文件外,当用户更改其设置时,该文件也应可由程序修改。显然,它应该与app.exe位于同一文件夹中

我认为这是一个相当琐碎的问题,但是我找不到正确的解决方案

  • 将配置文件复制到别处,对其进行修改并复制回程序文件
  • 在别处创建第二个配置文件
  • 不允许用户选择安装文件夹
  • 强制程序以管理员身份运行
所有这些解决方案都会导致糟糕的设计。什么解决方案不会


编辑:可能我的某些前提是错误的,可以将配置文件安装到AppData或其他任何地方,而不更改可执行文件的位置。但是,我还不能确定这是否可行。

在安装时更改app.config文件权限。如果您正在使用WIX(我只是假设,因为它是当今最流行的解决方案),请看一下应用程序设置体系结构,它应该可以帮助您-您可以定义用户设置以及存储在user.config文件中的应用程序设置

参考MSDN:


非默认用户范围设置存储在新文件user.config中,其中user是当前执行应用程序的人员的用户名。您可以使用DefaultSettingValueAttribute为用户范围设置指定默认值。由于用户范围设置在应用程序执行期间经常更改,因此user.config始终为读/写

运行时加载app.config可能存在重复。