c# - 修改Program Files目录下的App.config

标签 c# .net app-config

这是一个由两部分组成的问题。

我开发了一个可以读取和写入 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);
  1. 为什么我的开发电脑上没有遇到此问题?我已尝试使用本地管理员帐户和普通本地用户帐户。

  2. 如何将 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/

相关文章:

c# - 在 C# 中表示 double 的正确方法是什么?

c# - WPF 文本 block 不会在运行时显示属性更改

.net - app.config 中的 ConnectionStrings 带有 .config 文件不喜欢的字符

c# - 在 app.config 中设置值 - 没有对程序文件的写入权限

c# - 在 app.config 中加密连接字符串

c# - 如何从 C# 中的两个 List<String> 中获取移动组合?

c# - Xceed Datagrid ExportToExcel .xml/.xls/.xlsx 格式

.net - 删除 couchbase 存储桶中的所有文档

.net - 销售 .net 控件(帮助)

c# - 您如何将 { 和 } 放入格式字符串中