我从我的应用程序开始将配置写入注册表,就像几年前 UAC 不存在时所做的那样。
原来这不是一个好主意,所以我转到app.config
文件,发现 UAC 也有问题。
我对应用程序的配置是特定于机器的;个人用户没有自己的配置,包括服务在内的其余应用程序都驱动了单个配置文件。
如果我尝试在程序 files\myapp 文件夹中更新此文件,它会被拒绝。
对于这种需要单个配置文件的场景,其他人都在做什么?
我还应该提到,需要从我的应用程序中更新此配置。
我从我的应用程序开始将配置写入注册表,就像几年前 UAC 不存在时所做的那样。
原来这不是一个好主意,所以我转到app.config
文件,发现 UAC 也有问题。
我对应用程序的配置是特定于机器的;个人用户没有自己的配置,包括服务在内的其余应用程序都驱动了单个配置文件。
如果我尝试在程序 files\myapp 文件夹中更新此文件,它会被拒绝。
对于这种需要单个配置文件的场景,其他人都在做什么?
我还应该提到,需要从我的应用程序中更新此配置。
我会使用 Common Application Data 文件夹,这是大多数新应用程序存储与 UAC 一起使用的数据的地方。
您可以使用以下代码获取此信息:
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
要查看特殊文件夹的所有选项,您可以查看此链接:
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx
最常见的选项如下:
应用程序数据- 用作当前漫游用户的应用程序特定数据的公共存储库的目录。
公共应用程序数据- 用作所有用户使用的特定于应用程序数据的公共存储库的目录。
本地应用程序数据- 用作当前非漫游用户使用的特定于应用程序数据的公共存储库的目录。
您应该将用户的设置存储在app.config
您应该使用user.config
的 . 在这里查看更多信息。
任何机器范围的配置文件都应该存储在:
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
除非安装/更新应用程序,否则不应修改 Program Files 中的文件。
我对 WPF 应用程序有类似的需求。我要做的是:
我开始使用 .NET ConfigurationManager,但我切换到一个普通的旧 XML 文件,因为它更简单而且我的要求是基本的。