这是一个由两部分组成的问题。
我开发了一个可以读取和写入 App.config 的应用程序。 该应用程序由我的 MSI 安装程序安装在 Program Files 中。
它在我的 Win7 计算机上运行良好,但我的 Win7 用户在写入此 App.config 时被拒绝访问。
我正在使用以下代码写入 app.config:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["Endpoint"].Value = endpointTxtBox.Text;
config.Save(ConfigurationSaveMode.Modified);
为什么我的开发电脑上没有遇到此问题?我已尝试使用本地管理员帐户和普通本地用户帐户。
如何将 App.config 重新定位到不 protected 目录?
最佳答案
卡塔尔, 您不必移动 app.config 即可让您的用户保存他们的应用程序设置; .NET 已经支持将用户范围的应用程序设置保存在内置的用户可写存储中!您甚至可以在 app.config 文件中指定默认用户设置。
查看此链接了解详细信息:
http://msdn.microsoft.com/en-us/library/8eyb2ct1(v=vs.110).aspx
请注意,使用强类型的 .NET Settings 类,而不是原始的、弱类型的 AppSettings NameValueCollection。 (不过,这些设置仍然可以存储在 app.config 中。)
您可以在VS中创建一个Settings文件(该模板在VS中称为“Settings file”)。
起初,关于设置文件的一些事情让我感到困惑,所以我想我应该向您指出它们:
1) 首先:.settings 文件。 VS 设计器允许您定义应用程序设置、其类型及其范围(即用户或应用程序)。 这是设计器在您使用设计器时修改的文件,但运行时配置更改永远不会写入此文件。它定义您的应用程序设置及其默认值。就是这样。一开始当我试图理解设置文件时,我并没有明白这一点。
此外,请注意 .settings 文件上的构建操作设置为 SettingsSingleFileGenerator。
2) .designer.cs 文件。 VS/MSBuild 在构建时为您生成此文件,因为 .settings 文件上的构建操作设置为 SettingsSingleFileGenerator。它生成的类是配置属性的强类型包装器,您可以同样将其用于应用程序范围和用户范围的属性。
3) Settings 类包装的运行时设置仍然存储在 app.config 中。
4) 用户设置存储在该用户的 AppData\Local 目录下,以便他们具有完全的读/写权限。
关于c# - 修改Program Files目录下的App.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21778208/