C#app.config文件和UAC

时间:2012-08-24 15:27:46

标签: c# app-config uac

我开始使用我的应用程序将配置写入注册表,就像我多年前在UAC中所做的那样。

原来这不是一个好主意,所以我转移到app.config文件,发现这也与UAC有问题。

我对应用程序的配置是特定于机器的;个人用户没有自己的配置,其他应用程序(包括服务)都驱动单个配置文件。

如果我尝试在程序files \ myapp文件夹中更新此文件,则会被拒绝。

对于需要单个配置文件的情况,其他人在做什么?

我还应该提一下,这个配置需要在我的应用程序中更新。

4 个答案:

答案 0 :(得分:2)

我会使用Common Application Data文件夹,这是大多数新应用程序存储与UAC一起使用的数据的地方。

您可以使用以下代码获取此信息:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

要查看特殊文件夹的所有选项,您可以查看以下链接:

http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

最常见的选项如下:

应用程序数据 - 用作当前漫游用户的特定于应用程序的数据的公共存储库的目录。

公共应用程序数据 - 用作所有用户使用的特定于应用程序的数据的公共存储库的目录。

本地应用程序数据 - 用作当前非漫游用户使用的特定于应用程序的数据的公共存储库的目录。

答案 1 :(得分:0)

您应该将用户的设置存储在应使用app.config的{​​{1}}中。有关详细信息,请查看here

答案 2 :(得分:0)

任何机器范围的配置文件都应存储在:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

除非安装/更新应用程序,否则不应修改程序文件中的文件。

答案 3 :(得分:0)

我对WPF应用程序有类似的需求。我的工作如下:

  1. 使用样板文件配置文件安装应用程序。
  2. 当应用程序运行时,它会在用户的App Datadirectory中检查配置文件中的配置文件,如果它们不存在,则会从安装目录中复制默认的样板文件配置文件。
  3. 然后我做了所需的首次初始化初始化。
  4. 我开始使用.NET ConfigurationManager,但我切换到一个普通的旧XML文件,因为它更简单,我的要求是基本的。