为什么app.config中的应用程序设置是只读的?

Blo*_*ard 25 .net c# app-config

我在app.config中有一些设置,我打算成为'全局' - 即.任何用户都可以更改它们,所有用户都可以获得相同的设置.

但除非我将它们更改为用户设置,否则它们是只读的.

为什么是这样?

我应该如何坚持我的应用程序的全局设置?

编辑:

这实际上是一个Windows服务应用程序,它作为LocalSystem服务运行.它也可以由具有参数"/ config"的本地管理员手动运行,该参数启动Windows窗体以编辑配置值.

因此它%PROGRAMFILES%在两种情况下都具有写访问权限.

因此,我访问我的设置的方式是:

Settings.Default.MySetting = MyNewValue;
Run Code Online (Sandbox Code Playgroud)

当MySetting设置为Application时(在我的项目属性Settings.settings中),我得到一个编译时错误"MySetting是只读的".

我对这些东西不熟悉,还没有找到一个很好的解释它应该如何完成.例如,为什么我需要说'默认',这究竟意味着什么?我不知道.如果有人能指出我的app.config使用教程,那将非常有帮助.

Jad*_*ias 63

真正完整的答案:

app.config设置是只读的,因为有两种类型的设置:

  1. 应用程序设置
  2. 用户设置

除非应用程序发布者发布新版本,否则第一个不会更改.第二个不存储在app.config中,而是存储在user.config文件中.在此user.config文件的abscence中,app.config提供了默认值.

如果MySetting是用户设置:

Settings.Default.MySetting = MyNewValue;
Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)

它将使用新设置创建user.config文件[User Local Settings Application Data]\[company name]\[application].exe[hash string]\[version],这些设置将优先于app.config文件中的设置.

  • 这应该标记为"答案".很好解释. (2认同)